logo

Ieșirea programelor C++ | Setul 22

Preziceți rezultatul următoarelor programe C++. Întrebarea 1 CPP
#include    using namespace std; int main() {  int a = b = c = 0;  cout << a << '*' << b << '*' << c;  return 0; } 
Output:
Compile time error! 
Explicaţie: 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; 

Întrebarea 2 CPP
#include    using namespace std; int main() {  for ( ; ; ) cout << 'blank';  return 0; } 
Output:
Infinite Loop! 
Explicaţie: Deoarece condiția de testare de inițializare și condiția de creștere/descreștere lipsesc în bucla for, execuția va fi prinsă în bucla infinită.
Întrebarea 3 CPP
#include    using namespace std; int main() {   int i;  for (i=0; i<3; i++);    cout << 'hello!' <<i;  return 0; } 
Output:
hello!3 
Explicaţie: Hello!3 este rezultatul deoarece atunci când se execută bucla for nu are nicio sarcină de făcut din cauza punctului și virgulă (;) prezent în linia în care a fost definită bucla for. Bucla se va executa de trei ori și valoarea lui i va deveni 3, apoi restul instrucțiunilor se va executa.
Întrebarea 4 CPP
#include    using namespace std; int main() {  int i;  i = 1 + (14563);  cout << i;  return 0; } 
Output:
4 
Explicaţie: Operatorul virgulă () este un operator binar care evaluează primul operand și elimină rezultatul, apoi îl evaluează pe al doilea și apoi returnează valoarea secundului. Aici asociativitatea operatorului virgulă () este de la stânga la dreapta și este ușor de înțeles că expresia (14563) se evaluează ca fiind 3 și apoi rezultatul 1 + 3 este atribuit lui i.
Întrebarea 5 CPP
#include    using namespace std; int main() {  int a = 0 b;  b = (a = 50) + 10;  cout << a << '$' << b;  return 0; } 
Output:
50 
Explicaţie: Afirmația b = (a = 50) + 10; folosește conceptul de atribuire încorporată. Aici valoarea 50 este atribuită variabilei a și rezultatul 50+10 este atribuit lui b. Întrebarea 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:
120 
Explicaţie: C++ poate efectua, de asemenea, calcule aritmetice luând în considerare valorile ASCII ale caracterelor dacă operația aritmetică este efectuată pe variabile de tip de date char. Aici, în acest caz, răspunsul este 120, care este valoarea ASCII pentru x.
Întrebarea 7 CPP
#include   using namespace std; int main(int x) {  static int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
4321 
Explicaţie: Orice număr diferit de zero în C++ este tratat ca valoare adevărată. Aici, în acest cod, instrucțiunea if tinde să scadă valoarea lui i, dar în interiorul blocului if, funcția main() este apelată din nou și din nou. Aici programul pare să fie în buclă infinită, dar variabila i este de natură statică, are durata de viață până la execuție, prin urmare programul se va opri dacă i devine 0.
Întrebarea 8 CPP
#include   using namespace std; int main(int x) {  int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
infinite loop 
Explicaţie: Orice număr diferit de zero în C++ este tratat ca valoare adevărată. Aici, în acest cod, instrucțiunea if tinde să scadă valoarea lui i, dar în interiorul blocului if funcția main() este apelată din nou și din nou (toate instrucțiunile se vor executa acum ca și cum ar fi un program nou), prin urmare, execuția programului va fi prinsă într-o buclă infinită, deoarece nu există nicio condiție de terminare. Creați un test