logo

Output di programmi C++ | Serie 22

Prevedere l'output dei seguenti programmi C++. Domanda 1 CPP
#include    using namespace std; int main() {  int a = b = c = 0;  cout << a << '*' << b << '*' << c;  return 0; } 
Output:
Compile time error! 
Spiegazione: 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; 

Domanda 2 CPP
#include    using namespace std; int main() {  for ( ; ; ) cout << 'blank';  return 0; } 
Output:
Infinite Loop! 
Spiegazione: Poiché la condizione del test di inizializzazione e la condizione di incremento/decremento mancano all'interno del ciclo for, l'esecuzione verrà catturata in un ciclo infinito.
Domanda 3 CPP
#include    using namespace std; int main() {   int i;  for (i=0; i<3; i++);    cout << 'hello!' <<i;  return 0; } 
Output:
hello!3 
Spiegazione: Hello!3 è il risultato perché quando viene eseguito il ciclo for non ha alcuna attività da svolgere a causa del punto e virgola(;) presente nella riga in cui è stato definito il ciclo for. Il ciclo verrà eseguito tre volte e il valore di i diventerà 3, quindi verrà eseguito il resto delle istruzioni.
Domanda 4 CPP
#include    using namespace std; int main() {  int i;  i = 1 + (14563);  cout << i;  return 0; } 
Output:
4 
Spiegazione: L'operatore virgola () è un operatore binario che valuta il primo operando e scarta il risultato, quindi valuta il secondo e restituisce il valore di second. Qui l'associatività dell'operatore virgola () va da sinistra a destra ed è facile capire che l'espressione(14563) restituisce 3 e quindi il risultato 1 + 3 viene assegnato a i.
Domanda 5 CPP
#include    using namespace std; int main() {  int a = 0 b;  b = (a = 50) + 10;  cout << a << '$' << b;  return 0; } 
Output:
50 
Spiegazione: L'affermazione b = (a = 50) + 10; utilizza il concetto di assegnazione incorporata. Qui il valore 50 è assegnato alla variabile a e il risultato 50+10 è assegnato a b. Domanda 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 
Spiegazione: Il C++ può anche eseguire calcoli aritmetici considerando i valori ASCII dei caratteri se le operazioni aritmetiche vengono eseguite su variabili di tipo dati char. In questo caso la risposta è 120 che è il valore ASCII per x.
Domanda 7 CPP
#include   using namespace std; int main(int x) {  static int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
4321 
Spiegazione: Qualsiasi numero diverso da zero in C++ viene considerato come valore vero. Qui in questo codice l'istruzione if tende a diminuire il valore di i ma all'interno del blocco di if la funzione main() viene chiamata ancora e ancora. Qui il programma sembra essere in un ciclo infinito ma la variabile i è di natura statica e ha la sua durata fino all'esecuzione, quindi il programma si fermerà se i diventa 0.
Domanda 8 CPP
#include   using namespace std; int main(int x) {  int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
infinite loop 
Spiegazione: Qualsiasi numero diverso da zero in C++ viene considerato come valore vero. Qui in questo codice l'istruzione if tende a diminuire il valore di i ma all'interno del blocco if la funzione main() viene chiamata ancora e ancora (tutte le istruzioni ora verranno eseguite come se fosse un nuovo programma) quindi l'esecuzione del programma verrà catturata in un ciclo infinito poiché non esiste alcuna condizione di terminazione. Crea quiz