Arama butonu
Bu konudaki kullanıcılar: 1 misafir
6
Cevap
15311
Tıklama
1
Öne Çıkarma
C main neden 0a döner gerekli midir(return 0;) ?
B
10 yıl
Yüzbaşı

(Program çalıştırılmaya başladığında önceden yaratılması gereken objelere ilişkin yapılması gereken işler ve fonksiyonlar çağırıldıktan sonra) main fonksiyonunu işletim sistemi çağırır ve program sonlandığında main fonksiyonunun geri dönüş değerinin hedefi de yine kendisini çağırmış olan işletim sisteminin kendisidir.

'return 0;' satırının genel kabul görmüş manası da "Program hatasız sonlandırıldı" demek oluyor.
Eğer program sonlandırıldıktan sonra geri dönüş değeri önemliyse duruma göre başka değerler de istenirse döndürülebilinir. Ama çoğu kez programın geri dönüş değerine bakılmaz, veya program sonlandırıldığında 'return' kullanmak yerine birçok başka yoldan daha değişik ve kapsamlı bir şekilde bilgilendirme de yapılabilinir.

Program sonlandırıldığında, hususi olarak 'return' kullanılmadığı zaman, main fonksiyonunun çıkış değeri için ayrılmış "int" büyüklüğündeki hafıza alanında o anda hangi değer varsa onu işletim sistemine geri döndürür. Bu dönüş değeri kullanılmayacaksa da (ki senin bahsettiğin örneklerde öyle gözüküyor) dediğin gibi herhangi bir problem olmaz.
Veya 'return 0;' yazılmasa bile derleyici main fonksiyonunun sonuna 'return 0;' satırını biz görmeden gizlice ekleyip o şekilde de programı derleyebilir. Bu dediğim gizli kod ekleme işi de zannedersem sadece main fonksiyonuna özgü olan ve standartlarda da olan birşey.

main içersinde dediğin gibi programın başlangıç noktası diye kabul edilir ve içinde envai tür başka fonksiyonlar çağırılabileceği gibi o çağrılan fonksiyonların içinden de başka başka fonksiyonlar çağrılması fevkalade mümkün, kısacası her türlü şey olur, olabilir :)

Programlama işi dünyanın en zor işidir. Hiçbir zaman öğrenilenler yeterli miktarda olmaz, muhakkak öğrenilecek yeni birşeyler illa ki vardır :)





< Bu mesaj bu kişi tarafından değiştirildi Buzz Lightyear -- 1 Şubat 2016; 23:08:40 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Hynx
(Program çalıştırılmaya başladığında önceden yaratılması gereken objelere ilişkin yapılması gereken işler ve fonksiyonlar çağırıldıktan sonra) main fonksiyonunu işletim sistemi çağ...
Yoruma Git
Yorumun Devamı Buzz Lightyear - 10 yıl +4
H
10 yıl
Binbaşı
Konu Sahibi

daha yeni internetten C öğrenmeye başladım ve mantığını anlamadığım bazı şeyler var

genelde main fonksiyonu 0 a dönüyor yani en sonda return 0; yazıyor bunun sebebi nedir ? return 0 yazmadan da program sorunsuz çalışıyor bende.

bide ben returnu şöyle anladım : bir fonksiyon oluyor birkaç parametre giriyoruz ve en sonunda fonksiyon bir degere dönüyor. mesela toplam diye bir fonksiyon giriyoruz parametre olarak 2 sayı giriyoruz ve fonksiyonu iki sayının toplamına döndürüyoruz.main de programın ana fonksiyonu ve içinde birden fazla fonksiyon olabiliyor. doğru mudur

bu arada thenewboston diye bir youtube kanalından öğreniyorum buradan öğrendiklerim yeterli olur mu ? ve daha çok ilerlemek için kitap almak istersem hangi kitabı önerirsiniz ?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



B
10 yıl
Yüzbaşı

işin doğrusu "int main" şeklinde. main fonksiyonunun her ne kadar dönüş değeri kimse tarafından kullanılmasa bile bu bu şekilde öngörülmüş. Eskiden birçok derleyici tarafından "void main" de kabul görüyordu ama o iyice terkedildi diye biliyorum. int main, void main hiç mühim konular değil bu arada...

int main()
{
//...

return 0;
}

diye her defasında el alışkanlığıyla yazılır geçilir. Tabiyatıyle programın önemli kısımları bunun dışında kalan kodlar. Ancak tabii başlangıç olarak bunları detaylarıyla sorman da güzel birşey.




Bu mesajda bahsedilenler: @Hynx
H
10 yıl
Binbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Buzz Lightyear

(Program çalıştırılmaya başladığında önceden yaratılması gereken objelere ilişkin yapılması gereken işler ve fonksiyonlar çağırıldıktan sonra) main fonksiyonunu işletim sistemi çağırır ve program sonlandığında main fonksiyonunun geri dönüş değerinin hedefi de yine kendisini çağırmış olan işletim sisteminin kendisidir.

'return 0;' satırının genel kabul görmüş manası da "Program hatasız sonlandırıldı" demek oluyor.
Eğer program sonlandırıldıktan sonra geri dönüş değeri önemliyse duruma göre başka değerler de istenirse döndürülebilinir. Ama çoğu kez programın geri dönüş değerine bakılmaz, veya program sonlandırıldığında 'return' kullanmak yerine birçok başka yoldan daha değişik ve kapsamlı bir şekilde bilgilendirme de yapılabilinir.

Program sonlandırıldığında, hususi olarak 'return' kullanılmadığı zaman, main fonksiyonunun çıkış değeri için ayrılmış "int" büyüklüğündeki hafıza alanında o anda hangi değer varsa onu işletim sistemine geri döndürür. Bu dönüş değeri kullanılmayacaksa da (ki senin bahsettiğin örneklerde öyle gözüküyor) dediğin gibi herhangi bir problem olmaz.
Veya 'return 0;' yazılmasa bile derleyici main fonksiyonunun sonuna 'return 0;' satırını biz görmeden gizlice ekleyip o şekilde de programı derleyebilir. Bu dediğim gizli kod ekleme işi de zannedersem sadece main fonksiyonuna özgü olan ve standartlarda da olan birşey.

main içersinde dediğin gibi programın başlangıç noktası diye kabul edilir ve içinde envai tür başka fonksiyonlar çağırılabileceği gibi o çağrılan fonksiyonların içinden de başka başka fonksiyonlar çağrılması fevkalade mümkün, kısacası her türlü şey olur, olabilir :)

Programlama işi dünyanın en zor işidir. Hiçbir zaman öğrenilenler yeterli miktarda olmaz, muhakkak öğrenilecek yeni birşeyler illa ki vardır :)

Hocam sağol anladım. Bazen process returned 0 yerine başka bir sayı yazıyordu nedeni hata olmasıymış yani . Bu arada void main ve int main arasında fark var mı ?


Bu mesaja 1 cevap geldi.
B
10 yıl
Yüzbaşı

Sadece main fonksiyonuna özgü bir istisna olarak main fonksiyonundan 'return' kullanılarak çıkılmasa dahi derleyici uyarı vermeyebiliyor, çünkü standartlarda 'return'süz main'de makbul. Ancak bu diğer fonksiyonlar için geçerli değil elbette.




Bu mesajda bahsedilenler: @seyfi84
B
10 yıl
Yüzbaşı

Anlıyorum. Benim kullandığım C++ Builder 10 Seattle derleyicisinde de proje ayarlarında "Treat warnings as errors" diye seçtiğim halde mesela 'main'de return yazmasam bile derliyor ve uyarı bile vermiyor.
Ancak bu durumda elbette diğer fonksiyonlarda eğer return gerekiyorsa ve yazılmamışsa hata olarak bildirerek derlemiyor.




Bu mesajda bahsedilenler: @seyfi84
H
10 yıl
Binbaşı
Konu Sahibi

quote:

Orijinalden alıntı: seyfi84

bu kadar uzun anlatacak bir mevzu değil, cevap basit:
C'de fonksiyonlar void olarak tanımlanmadıysa bir değer return etmesi gerekir. main de bir fonksiyon, int olarak tanımlı, o halde bir int değer return edecek.
return yazmadın ve hata vermedi, olabilir, derleyici affedici olabiliyor kullandığın derleme argümanlarına göre. tavsiyem o ayarları değiştir, öyle affedici olmasın, daha iyi öğrenirsin. gcc için -Werror -Wall ekle, cl.exe için de benzer ayarlar var.

nasıl ekleyebilirim. proje açarken derleyiciler arasından gnu gcc seçiyorum ekleme çıkarma sormuyor



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.