logo

Sortida de programes C++ | Set 22

Prediu la sortida dels següents programes C++. Pregunta 1 CPP
#include    using namespace std; int main() {  int a = b = c = 0;  cout << a << '*' << b << '*' << c;  return 0; } 
Output:
Compile time error! 
Explicació: 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; 

Pregunta 2 CPP
#include    using namespace std; int main() {  for ( ; ; ) cout << 'blank';  return 0; } 
Output:
Infinite Loop! 
Explicació: Com que la condició de prova d'inicialització i la condició d'increment/disminució no es troben dins del bucle for, l'execució quedarà atrapada en un bucle infinit.
Pregunta 3 CPP
#include    using namespace std; int main() {   int i;  for (i=0; i<3; i++);    cout << 'hello!' <<i;  return 0; } 
Output:
hello!3 
Explicació: Hola!3 és el resultat perquè quan s'executa el bucle for no té cap tasca a fer a causa del punt i coma (;) present a la línia on s'ha definit el bucle for. El bucle s'executarà tres vegades i el valor de i es convertirà en 3 i després s'executarà la resta de les declaracions.
Pregunta 4 CPP
#include    using namespace std; int main() {  int i;  i = 1 + (14563);  cout << i;  return 0; } 
Output:
4 
Explicació: L'operador coma () és un operador binari que avalua el primer operand i descarta el resultat i després avalua el segon i després retorna el valor de segon. Aquí l'associativitat de l'operador coma () és d'esquerra a dreta i és fàcil d'entendre que l'expressió (14563) s'avalua com a 3 i després el resultat 1 + 3 s'assigna a i.
Pregunta 5 CPP
#include    using namespace std; int main() {  int a = 0 b;  b = (a = 50) + 10;  cout << a << '$' << b;  return 0; } 
Output:
50 
Explicació: L'enunciat b = (a = 50) + 10; utilitza el concepte d'assignació incrustada. Aquí el valor de 50 s'assigna a la variable a i el resultat 50+10 s'assigna a b. Pregunta 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 
Explicació: El C++ també pot realitzar càlculs aritmètics tenint en compte els valors ASCII dels caràcters si l'operació aritmètica es realitza sobre variables del tipus de dades char. Aquí, en aquest cas, la resposta és 120, que és el valor ASCII de x.
Pregunta 7 CPP
#include   using namespace std; int main(int x) {  static int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
4321 
Explicació: Qualsevol nombre diferent de zero en C++ es tracta com a valor real. Aquí, en aquest codi, la instrucció if tendeix a disminuir el valor de i, però dins del bloc de if la funció main() es crida una i altra vegada. Aquí el programa sembla estar en bucle infinit, però la variable i és de naturalesa estàtica, té la seva vida útil fins a l'execució, per tant, el programa s'aturarà si i passa a 0.
Pregunta 8 CPP
#include   using namespace std; int main(int x) {  int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
infinite loop 
Explicació: Qualsevol nombre diferent de zero en C++ es tracta com a valor real. Aquí, en aquest codi, la instrucció if tendeix a disminuir el valor de i, però dins del bloc de if la funció main() es crida una i altra vegada (totes les sentències ara s'executaran com si fos un programa nou), per tant, l'execució del programa quedarà atrapada en un bucle infinit ja que no hi ha cap condició de terminació. Crea un qüestionari