Izlaz C++ programa | Set 22
Predvidite izlaz sljedećih C++ programa. pitanje 1 CPP
pitanje 2 CPP
pitanje 3 CPP
pitanje 4 CPP
pitanje 5 CPP
Pitanje 7 CPP
Pitanje 8 CPP
#include using namespace std ; int main () { int a = b = c = 0 ; cout < < a < < '*' < < b < < '*' < < c ; return 0 ; }
Output: Compile time error!Obrazloženje: 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;
pitanje 2 CPP
#include using namespace std ; int main () { for ( ; ; ) cout < < 'blank' ; return 0 ; }
Output: Infinite Loop!Obrazloženje: Budući da unutar petlje for nedostaje uvjet testa inicijalizacije i uvjet inkrementa/dekrementa, izvođenje će biti uhvaćeno u beskonačnoj petlji.
pitanje 3 CPP
#include using namespace std ; int main () { int i ; for ( i = 0 ; i < 3 ; i ++ ); cout < < 'hello!' < < i ; return 0 ; }
Output: hello!3Obrazloženje: Hello!3 je rezultat jer kada se petlja for izvrši, nema zadatak za obaviti zbog točke-zareza(;) prisutnog u retku gdje je petlja for definirana. Petlja će se izvršiti tri puta i vrijednost i postat će 3, a zatim će se izvršiti ostatak naredbi.
pitanje 4 CPP
#include using namespace std ; int main () { int i ; i = 1 + ( 1 4 5 6 3 ); cout < < i ; return 0 ; }
Output: 4Obrazloženje: Operator zarez () je binarni operator koji procjenjuje prvi operand i odbacuje rezultat, zatim procjenjuje drugi i vraća vrijednost drugog. Ovdje je asocijativnost operatora zareza () s lijeva na desno i lako je razumjeti da se izraz (14563) procjenjuje kao 3, a zatim se rezultat 1 + 3 dodjeljuje i.
pitanje 5 CPP
#include using namespace std ; int main () { int a = 0 b ; b = ( a = 50 ) + 10 ; cout < < a < < '$' < < b ; return 0 ; }
Output: 50Obrazloženje: Tvrdnja b = (a = 50) + 10; koristi koncept ugrađene dodjele. Ovdje je vrijednost 50 dodijeljena varijabli a, a rezultat 50+10 dodijeljen je varijabli b. Pitanje 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: 120Obrazloženje: C++ također može izvoditi aritmetičke izračune uzimajući u obzir ASCII vrijednosti znakova ako se aritmetičke operacije izvode na varijablama tipa podataka char. Ovdje u ovom slučaju odgovor je 120 što je ASCII vrijednost za x.
Pitanje 7 CPP
#include using namespace std ; int main ( int x ) { static int i = 5 ; if ( -- i ) { cout < < i ; main ( 10 ); } return 0 ; }
Output: 4321Obrazloženje: Svaki broj različit od nule u C++-u tretira se kao prava vrijednost. Ovdje u ovom kodu naredba if ima tendenciju smanjivanja vrijednosti i, ali unutar bloka if funkcija main() poziva se uvijek iznova. Ovdje se čini da je program u beskonačnoj petlji, ali varijabla i je statična po prirodi i ima svoj životni vijek do izvršenja, stoga će se program zaustaviti ako i postane 0.
Pitanje 8 CPP
#include using namespace std ; int main ( int x ) { int i = 5 ; if ( -- i ) { cout < < i ; main ( 10 ); } return 0 ; }
Output: infinite loopObrazloženje: Svaki broj različit od nule u C++-u tretira se kao prava vrijednost. Ovdje u ovom kodu naredba if ima tendenciju smanjivanja vrijednosti i, ali unutar bloka if funkcija main() poziva se iznova i iznova (sve naredbe sada će se izvršavati kao da se radi o novom programu), stoga će izvođenje programa biti uhvaćeno u beskonačnoj petlji jer nema uvjeta prekida. Napravi kviz