[]
Çok basit IF - ELSE sorusu
{
1. int x=11,y=9;
2.
3. if(x<5)
4. if(y>8)
5. printf("*****\n");
6.
7. else
8. printf("#####\n");
9. printf("&&&&&\n");
10. return 0;
}
bu kod bloğu koşturulduğunda çıktı olarak "&&&&&" çıkıyor sadece.
if, else if, else de öncelik neye göre yapılıyor bir çok örnek baktım tam kavrayamadım. kısaca açıklar mısınız?
örneğin 3. satırda ki şart sağlanmadığı için direkt 9. satıra geçilir gibi.
1. int x=11,y=9;
2.
3. if(x<5)
4. if(y>8)
5. printf("*****\n");
6.
7. else
8. printf("#####\n");
9. printf("&&&&&\n");
10. return 0;
}
bu kod bloğu koşturulduğunda çıktı olarak "&&&&&" çıkıyor sadece.
if, else if, else de öncelik neye göre yapılıyor bir çok örnek baktım tam kavrayamadım. kısaca açıklar mısınız?
örneğin 3. satırda ki şart sağlanmadığı için direkt 9. satıra geçilir gibi.
İlk önce x2e bakıyor 5'ten küçük mü diye ve değil. Bu yüzden y>8 kısmı (4. satır) çalışmıyor. 4. satıra hiç girmiyor. Ayrıca o else de y>8'in else'i.
Aslında indentation yapılırsa kod şöyle görünecek
if(x<5)
if (y>8) printf("*****\n");
else printf("#####\n");
printf("&&&&&\n");
Dolayısıyla x'5ten küçük olmadığı için 9. satıra kadar komple çalışmıyor. Peki 9. satırın çalışma nedeni ne?
if ve else'lerde {} blokları kullanılmıyorsa, o if-else koşulları sadece bir satırlık komutlardan oluşuyor demektir. Yani x 5'ten küçükse y'ye ait if else döngüsüne girecek. y de 8'den büyükse ***** yazdıracak, y 8'den küçükse veya 8 ise ##### yazdıracak. Ancak x 5'ten küçük olmadığı için onların hiçbiri çalışmadı. Bu şekilde if x<5 kapandı ve 9. satırda if döngüsünden tamamen kurtulundu. 9. satırda artık ana fonksiyondayız ve bir şeyin koşulu olmaksızın &&&&& yazdırıyoruz.
Aslında indentation yapılırsa kod şöyle görünecek
if(x<5)
if (y>8) printf("*****\n");
else printf("#####\n");
printf("&&&&&\n");
Dolayısıyla x'5ten küçük olmadığı için 9. satıra kadar komple çalışmıyor. Peki 9. satırın çalışma nedeni ne?
if ve else'lerde {} blokları kullanılmıyorsa, o if-else koşulları sadece bir satırlık komutlardan oluşuyor demektir. Yani x 5'ten küçükse y'ye ait if else döngüsüne girecek. y de 8'den büyükse ***** yazdıracak, y 8'den küçükse veya 8 ise ##### yazdıracak. Ancak x 5'ten küçük olmadığı için onların hiçbiri çalışmadı. Bu şekilde if x<5 kapandı ve 9. satırda if döngüsünden tamamen kurtulundu. 9. satırda artık ana fonksiyondayız ve bir şeyin koşulu olmaksızın &&&&& yazdırıyoruz.
- aychovsky (30.05.16 03:12:04)
x<5 kosulu saglanmadigindan if statementi icerisine girmiyor, bu yuzden ilk iki printf es geciliyor ve sondaki printf calisiyor.
- ubi dubium ibi libertas (30.05.16 03:12:11)
özellikle parantezsiz yazdım, çünkü sınavda böyle çıkıyor.
if komutu sağlanmadığında else komutu da otomatik olarak pas geçiliyor bu durumda? ben önce if sonra else if sonra else komutuna bakılacak şekilde şartlandırmıştım kendimi.
if komutu sağlanmadığında else komutu da otomatik olarak pas geçiliyor bu durumda? ben önce if sonra else if sonra else komutuna bakılacak şekilde şartlandırmıştım kendimi.
- seni sevenleri bir kere uzdun (30.05.16 03:26:17 ~ 03:27:43)
Bence
Hem x<5 oldugunda VE y>8 oldugunda yani ikisi ayni andaysa and koyacaksin.
If (x<5 && y>8)
printf ("*****"\n)
Else
Printf ("&&&&&"\n)
Yani bu kosullarda x=11, y=9da x if kosulunu saglamadigindan direkt &&&& olan (else sonucunu) ekrana yazacak.
Istedigin bu muyduu:/
Hem x<5 oldugunda VE y>8 oldugunda yani ikisi ayni andaysa and koyacaksin.
If (x<5 && y>8)
printf ("*****"\n)
Else
Printf ("&&&&&"\n)
Yani bu kosullarda x=11, y=9da x if kosulunu saglamadigindan direkt &&&& olan (else sonucunu) ekrana yazacak.
Istedigin bu muyduu:/
- kuehles blondes (30.05.16 09:25:49)
if sağlanmadığı için else'e geçmememizlik etmiyor. Önce if'e sonra else'e bakalır. Burada atlamanın sebebi çok farklı. if ve else y için var, y kontrolü de x'e bağlı.
Eğer x 5'ten küçükse, y'yi kontrol et. y 8'den büyükse ***** yazdır, y 8 veya 8'den küçükse, ##### yazdır.
Burada x 5'ten büyük olduğu için y'yi kontrol etmiyor hiç. Hiçbir şeye bağlı olmayan &&&&&'i yazdırıyor.
Eğer x 5'ten küçükse, y'yi kontrol et. y 8'den büyükse ***** yazdır, y 8 veya 8'den küçükse, ##### yazdır.
Burada x 5'ten büyük olduğu için y'yi kontrol etmiyor hiç. Hiçbir şeye bağlı olmayan &&&&&'i yazdırıyor.
- aychovsky (30.05.16 11:02:29 ~ 11:05:10)
1