folder Tahribat.com Forumları
linefolder C - C++
linefolder C Ve C++ Da Koşul Sintaksı Kafa Karışıklığım



C Ve C++ Da Koşul Sintaksı Kafa Karışıklığım

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek

    genelde döngülerde şu çeşit bildirmlere raslıyorum

     

    #include <iostream>
    using namespace std;

    int i,j;
    char a[][80]={"Pazartesi","Sali","Carsamba",
    "Persembe", "Cuma", "Cumartesi", "Pazar"};

    void main()
    {
       for (i=0;a[i][0];i++)
       {
          for (j=0;a[i][j];j++)
             cout << a[i][j];
          cout << "\n";
       }
    }

    *** for (i=0;a[i][0];i++)
    ***for (j=0;a[i][j];j++)

    buralarda döngü koşulunda her hangibir karşılaştırma görünmediği halde  nasıl bir karşılaştırma gerçekleşiyor ve

    program çalışıyor...

    Bir de bu karakter dizge ve dizilerini olabilecek en zor bir şekilde anlatıyorlar her tarafta mk.. hep c/p kafa karışıklığım giden kadar beynim zkildi..


    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wking
    wking's avatar
    Kayıt Tarihi: 28/Mart/2010
    Erkek

    Hocam dediğinden şunu anladım, içteki for döngüsünün {} parantezleri yok fakat nasıl çalışıyor.

    if, else if, for, while, do while... bunların hepsini kullanırken eğer koşul sağlandığında çalışacak kod tek satırsa, {} parantezlerini koymana gerek yok, aşağıda olduğu gibi.

    for (j=0;a[i][j];j++)
             cout << a[i][j];

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek

    wking bunu yazdı:
    -----------------------------

    Hocam dediğinden şunu anladım, içteki for döngüsünün {} parantezleri yok fakat nasıl çalışıyor.

    if, else if, for, while, do while... bunların hepsini kullanırken eğer koşul sağlandığında çalışacak kod tek satırsa, {} parantezlerini koymana gerek yok, aşağıda olduğu gibi.

    for (j=0;a[i][j];j++)
             cout << a[i][j];


    -----------------------------

    hayır

    (j=0;a[i][j];j++)
     

    satırında a[i][j] terimin yanıda bir karşılaştırma operatörü olmadığı halde kod nasıl çalışıyor,

    normalde bir <=, >=, == gibi şeyler olması gerkmezmi ya da konmadığındane anlama geliyor..


    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hunter
    j4x
    j4x's avatar
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    Karşılaştırma operatörü olması gerekmez. Mantıksal bi ifade olması gerekir.

    2. for döngüsünü kullanarak harf harf yazdirmişsin zaten. C deki stringlerin sonunda '\0' karakteri yani null terminator oldugu ve ayni zamanda false degerine esit oldugu icin duracaktir.

    Ayni şekilde ilk dizininde son elemanı 0 (false) olduğu için duruyor.


    The king is bleeding.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wking
    wking's avatar
    Kayıt Tarihi: 28/Mart/2010
    Erkek

    ltcelik bunu yazdı:
    -----------------------------

    wking bunu yazdı:
    -----------------------------

    Hocam dediğinden şunu anladım, içteki for döngüsünün {} parantezleri yok fakat nasıl çalışıyor.

    if, else if, for, while, do while... bunların hepsini kullanırken eğer koşul sağlandığında çalışacak kod tek satırsa, {} parantezlerini koymana gerek yok, aşağıda olduğu gibi.

    for (j=0;a[i][j];j++)
             cout << a[i][j];

     


    -----------------------------

    hayır

    (j=0;a[i][j];j++)

    satırında a[i][j] terimin yanıda bir karşılaştırma operatörü olmadığı halde kod nasıl çalışıyor,

    normalde bir <=, >=, == gibi şeyler olması gerkmezmi ya da konmadığındane anlama geliyor..


    -----------------------------

    Dediğini şimdi anladım. qVeR'in de dediği gibi mantıksal bir ifade yeterli. Mesela while döngüsüyle sonsuz döngü yapmak isterken nasıl while(1) yazıyorsan, for döngüsünde de bu mantıksal ifade işe yarar.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek

    Tamam anladım dizinin son elemanı  \0 olduğu için, genel olarak önerme FALSE =0 a düştüğü için döngüden çıkılıyor...

    Teşekkürler TBT

     


    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    bilmece
    bilmece's avatar
    Kayıt Tarihi: 29/Aralık/2009
    Erkek
    bi örnekde ben verim int a; if(a) printf("a sıfır degil"); yada if(!a) printf("a sıfır");
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    JPriest
    JPriest's avatar
    Kayıt Tarihi: 09/Mart/2007
    Erkek

    Sadece stringlerde değil, diğer tipteki dizilerde de dolaşırken var mı kontrolü yapılıyor orda. Varsa true yoksa false işte.

    (a != null) yerine (a) yazsan yeterli.


    Sen hiç kaval çaldın mı?
Toplam Hit: 1493 Toplam Mesaj: 8