#include using namespace std; int main() { int a = b = c = 0; cout << a << '*' << b << '*' << c; return 0; }
Output: Compile time error!Selitys: A chained statement cannot be used to initialize variables at the time of declaration. Hence the statement a = b = c = 0; is an illegal statement. However following way a legal syntax and can be used in C++ or C.
int abc; a = b = c = 0;
Kysymys 2 CPP
#include using namespace std; int main() { for ( ; ; ) cout << 'blank'; return 0; }
Output: Infinite Loop!Selitys: Koska alustustestiehto ja lisäys/vähennysehdot puuttuvat silmukan sisältä, suoritus jää äärettömään silmukkaan.
Kysymys 3 CPP
#include using namespace std; int main() { int i; for (i=0; i<3; i++); cout << 'hello!' <<i; return 0; }
Output: hello!3Selitys: Hello!3 on tulos, koska kun for silmukka suoritetaan, sillä ei ole mitään tehtävää johtuen puolipisteestä (;) rivillä, jossa for silmukka on määritelty. Silmukka suoritetaan kolme kertaa ja i:n arvosta tulee 3, sitten loput lauseet suoritetaan.
Kysymys 4 CPP
#include using namespace std; int main() { int i; i = 1 + (14563); cout << i; return 0; }
Output: 4Selitys: Pilkku () -operaattori on binäärioperaattori, joka arvioi ensimmäisen operandin ja hylkää tuloksen ja arvioi sitten toisen ja palauttaa sitten toisen arvon. Tässä operaattorin pilkku () assosiatiivisuus on vasemmalta oikealle ja on helppo ymmärtää, että lauseke (14563) laskee arvoksi 3 ja sitten tulos 1 + 3 annetaan i:lle.
Kysymys 5 CPP
#include using namespace std; int main() { int a = 0 b; b = (a = 50) + 10; cout << a << '$' << b; return 0; }
Output: 50Selitys: Lause b = (a = 50) + 10; käyttää sulautetun tehtävän käsitettä. Tässä muuttujalle a annetaan arvo 50 ja b:lle tulos 50+10. Kysymys 6 CPP
#include using namespace std; int main() { char a = 30 b = 40 c = 10; char d = (a*b)/c; cout << int(d); return 0; }
Output: 120Selitys: C++ voi myös suorittaa aritmeettisia laskelmia ottaen huomioon merkkien ASCII-arvot, jos aritmeettinen toimenpide suoritetaan char-tietotyypin muuttujille. Tässä tässä tapauksessa vastaus on 120, joka on x:n ASCII-arvo.
Kysymys 7 CPP
#include using namespace std; int main(int x) { static int i = 5; if (--i) { cout << i; main(10); } return 0; }
Output: 4321Selitys: Kaikkia nollasta poikkeavia lukuja C++:ssa käsitellään todellisina arvoina. Tässä koodissa if-lause pyrkii pienentämään i:n arvoa, mutta if-lohkon sisällä main()-funktiota kutsutaan yhä uudelleen ja uudelleen. Tässä ohjelma näyttää olevan äärettömässä silmukassa, mutta muuttuja i on luonteeltaan staattinen, sillä sen elinikä on suoritukseen asti, joten ohjelma pysähtyy, jos i:stä tulee 0.
Kysymys 8 CPP
#include using namespace std; int main(int x) { int i = 5; if (--i) { cout << i; main(10); } return 0; }
Output: infinite loopSelitys: Kaikkia nollasta poikkeavia lukuja C++:ssa käsitellään todellisina arvoina. Tässä koodissa if-lause pyrkii pienentämään i:n arvoa, mutta if-lohkon sisällä main()-funktiota kutsutaan yhä uudelleen (kaikki käskyt suoritetaan nyt kuin se olisi uusi ohjelma), joten ohjelman suoritus jää äärettömään silmukkaan, koska lopetusehtoa ei ole. Luo tietokilpailu