linkteki sorunun cevabı nedir?

i.hizliresim.com


 

tüm örnekler de sonsuz döngü içinde çalışır. denemek için

www.onlinegdb.com

the last

3 örnek sonsuzs kadar çalışamaz stackoverflow olur

Sir Anthony Hopkins

yani direk c standardina gore soruyorsa bence nuevo'nun cevabi yanlis. Cevap "yalniz 2" olmali.

1 icin n unsigned int olarak verilmis. unsigned int overflow edince 0'dan tekrar baslar, for loop da n > 0 gecerli olmaz ve program sonlanir.

2 icin while'da 0 olmayan her sey true sayilir. n = -n olunca n -1 ve 1 arasinda doner durur ve while bunu hep true olarak gorur, sonsuza kadar calisir.

3 icin, teoride sonsuza kadar calisabilir tail call optimization falan durumlarinda ama c icin konusursak recursion stack uzerinde olacagi icin bir sure sonra stack overflow verip program sonlanacaktir. ama bazi compilerlar TCO yapabilir o durumda stack overflow olmayabilir, standart implementasyona birakmistir diye biliyorum. o yuzden sonsuza kadar kesin calisir diyemeyiz ama algoritmayi sonsuz tape'i olan bir turing machine'de calistiracak olsaydik sonsuza kadar calisirdi evet. cevaplarda 2 ve 3 olmadigi icin bunu c standardina gore yorumlamamiz isteniyor denilebilir o zaman da cevap "Yalniz 2" olur.

Benim C biraz pasli ama eyorlamam bu kadar.

edit: Sir Anthony Hopkins, 1 ve 2 de stack overflow olmasi icin bir sebep yok cunku recursion yok. 1'de daha once yazdigim gibi numerical overflow olur, n 0 olur bir yerde o kadar. 2 sonsuza kadar calisir gibime geliyor cunku while 0 olmadigi surece true sayilir diye biliyorum.

robokot

sonsuz döngü içinde çalışır dedim gençler, sonsuza kadar çalışır diyebilmek zaten pratikte mümkün değil.

the last

tamam hepsi sonsuz dongu icinde de calismaz, cevabimda acikladim. online compiler'da javascript uzerinden calistigi icin print islemleri browser tabini kilitliyor ondan sonsuzmus gibi gozukebilir.

robokot

@robokot online compiler bir kabuk gibi verilen c kodunu sunucuda çalıştırır ve gelen isteği gösterir, ilgili sayfada bir donma olmadı zaten. 1. örnekte yanılmışım ama diğer örneklerde sonsuz döngü gerçekleşiyor göründüğü kadarıyla.

the last
1

mobil görünümden çık