#include <stdio.h>

int main(){

        while(0){
            printf("While in ici");
        }

        printf("while in disi");

        return 0;
}

Üsteki kod parçası sadece sormak istediğimi açıklamak için.C programların sonunda kullanılan return 0 sisteme programın başarılı bir şekilde çalıştıgını soylemek için değil mi? Bir bakımı true yani. Ancak döngülerde ve if lerde 0-false 1-true olarak kabul ediliyor. Ordaki sıfırlar farklı sıfırlar olabilir, ancak kafama takıldı ve net bir açıklama yapar mısınız? 0-false geri kalan değerlerin true oluşu tüm dillerde kullanılan bir durum mu, yoksa tersi durumlar var mı?

soruldu: 24 Eyl '12, 14:53

ssselim's gravatar image

ssselim
151359
cevap kabul oranı: 0%

değiştirildi: 24 Eyl '12, 14:55

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


Buradaki return 0 programin başarılı olduğunu göstermek için kullanılmamıştır. Değeri değiştirerek gözlemleyebilirsin. Burada 0 göndermenin tek sebebi sistemin programın sorunsuz bir şekilde bittiğini anlamasını sağlamaktır. Yani eğer 1 yollarsam hatalı olur gibi bir düşünce yanlış olur.

0 olmayan her değerin true olması tüm dillerde genellenebilecek bir durum değildir, zaten güvenilir bir yol olmadığı için de tercih etmemeni tavsiye ederim.

permanent link

cevaplandı: 24 Eyl '12, 19:23

kubudi's gravatar image

kubudi
162
cevap kabul oranı: 0%

C gibi daha eski ve core dillerde dil ile gelen Exception Handling olmadığı için kullanılan metodlardaki işlemlerin nasıl sonuçlandığının bilinmesi gereklidir. Bu sebeple fonksiyon çağırılır, fonksiyon yapması gerektiği işi sorunsuz yaparsa 0 değerini, bir problemle karşılaştıysa karşılaştığı problemin kodunu geri döndürür. Fonksiyonu çağıran tarafta geri döndürülen değerlere bakılarak hatanın varlığı, varsa hangi hata olduğu tespit edilebildiğinden akış da buna göre şekillenir. Ayrıca hatayla sonuçlanan fonksiyon çağırmalarında hangi hatanın oluştuğu, debug raporunda da belirtilerek geliştiriciyi yönlendirebilir.

Burada döndürülen sıfır değeri sadece hata kodunu ifade eder. Hata oluşmadığını ifade eden hata kodunun 0 seçilmesi de omerozkan'ın da dediği gibi bir kültürden ibaret olsa gerek.

Son olarak, C'de if şartında sayısal 0 dışındaki tüm değerler true kabul edilir. True sadece 1'e özgü değildir.

permanent link

cevaplandı: 25 Eyl '12, 09:29

ersinyildiz's gravatar image

ersinyildiz
2.8k31438
cevap kabul oranı: 29%

Bence return ile dönen değeri true olarak değerlendirmemek lazım. Sonuçta main fonksiyonu 0 integer değerini dönderiyor. Programın hatasız çalıştığını ifade etmesi de sadece sonucunun kullanıcı veya geliştirici tarafından yorumlanmasından ibaret. Programın başarılı çalıştığını ifade etmek için 1 de yazsan programın yaptığı işi değiştirmez veya herhangi bir hata oluşmaz. 0'ın başarılı olarak nitelendirilmesi geliştiricilerin kazandığı bir kültürden ibaret.

Yani kısacası main fonksiyonun dönderdiği değer 0 bir integer değeri. while ve if içerisindeki değerler ise boolean olarak değerlendiriliyor. Detaylı bilmiyorum ama anladığım kadarıyla da while veya if içerisinde yazılan değerin tüm bitleri 0 ise false, diğer durumlarda true olarak değerlendiriliyor.

Bazı programlama dilleri koşul içerisine integer değer yazılmasını kabul etmez. Bildiğim programlama dillerinden sadece C ve C++'ın bu şekilde izin verdiğini gördüm.

permanent link

cevaplandı: 24 Eyl '12, 19:23

omerozkan's gravatar image

omerozkan
87581528
cevap kabul oranı: 9%

değiştirildi: 24 Eyl '12, 19:25

int main() şeklinde bir fonksiyon yazdığın için C dilinde de olsa C# da olsa java da olsa bir değer döndürmek zorundasın. C de main fonksiyon int olarak tanımlanmıştır ve genelde 1 döndürülür. 0 döndürülmesi yada başka bir sayı döndürülmesinin sorun çıkaracağını sanmıyorum. Programlama dillerinde 0 her zaman fazle ve 1 her zaman true değeri gösterir. Burada tek amaç fonksiyonun bir değeri return etme zorunluluğunu karşılamaktır.

permanent link

cevaplandı: 25 Eyl '12, 02:32

numankaraaslan's gravatar image

numankaraaslan
1.8k253749
cevap kabul oranı: 19%

C programlarındaki main() fonksiyonunun int değer döndürmesinin bir amacı vardır. return ile döndürülen değer işletim sistemi tarafından incelenir. main'i içeren exe'nin doğru çalışıp çalışmadığı bilgisi işletim sistemi tarafından alınmak zorundadır. return 0 koduyla sonlanmamış programlar akışını bitirmemiş kabul edilir.

Bir ikincisi C programlarında varsayılan return değeri 0'dır. 1 aksi durumlarda kullanılır.

(25 Eyl '12, 09:36) ersinyildiz ersinyildiz's gravatar image

bunları bilmiyordum teşekkürler :)

(25 Eyl '12, 09:37) numankaraaslan numankaraaslan's gravatar image

return bir şey dönderir, bu şey bir değişken olabilir, bir sayı olabilir, bir yazı olabilir, kısacası o an bize ne gerekliyse onu dönderir. kaldı ki biz gönderdiğimiz ve aldığımız her şeyi önce den kontrol edip "eğer şu dönerse bunu yap" deriz. yani 1 ve 0 orada sadece bir sayıdan ibarettir. biz o return ile gelen sayıyı "eğer sıfır ise false yap" deriz ya da "bir ise true yap" deriz..

biz "eğer sıfır ise true yap" dersek o zaman da sıfır değerini gördüğünde true yapacaktır.. yani velhasılkelam return olayı tamamen yazılımcının elinde olan bir olaydır, istediği gibi evirir çevirir..

permanent link

cevaplandı: 15 Oca '13, 15:29

ercet00ilk's gravatar image

ercet00ilk
984435662
cevap kabul oranı: 11%

Baktığımızda kod test amaçlı yazılmış gibi görünüyor. Eninde sonunda bi return değeri göndermek zorundadır ve 0 ı göndermiş. Gönderilen return değeri yapılan işleme göre değişir.

Sonuç olarak buradaki return değeri 'true' veya 'false' i ifade etmiyor.

permanent link

cevaplandı: 16 Oca '13, 03:04

creseos's gravatar image

creseos
2.0k468187
cevap kabul oranı: 37%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×42

Soruldu: 24 Eyl '12, 14:53

Görüntüleme: 1,394 kez

Son güncelleme: 16 Oca '13, 03:04

powered by BitNami OSQA