C Ve C++ Da Koşul Sintaksı Kafa Karışıklığım
-
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..
-
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]; -
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..
-
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.
-
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.
-
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
-
bi örnekde ben verim int a; if(a) printf("a sıfır degil"); yada if(!a) printf("a sıfır");
-
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.
