logo

Uitvoer van C++-programma's | Stel 22 in

Voorspel de uitvoer van de volgende C++-programma's. Vraag 1 CPP
#include    using namespace std; int main() {  int a = b = c = 0;  cout << a << '*' << b << '*' << c;  return 0; } 
Output:
Compile time error! 
Uitleg: 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; 

Vraag 2 CPP
#include    using namespace std; int main() {  for ( ; ; ) cout << 'blank';  return 0; } 
Output:
Infinite Loop! 
Uitleg: Omdat de initialisatietestvoorwaarde en de voorwaarde voor verhogen/verlagen ontbreken in de for-lus, wordt de uitvoering gevangen in een oneindige lus.
Vraag 3 CPP
#include    using namespace std; int main() {   int i;  for (i=0; i<3; i++);    cout << 'hello!' <<i;  return 0; } 
Output:
hello!3 
Uitleg: Hallo! 3 is het resultaat, omdat wanneer de for-lus wordt uitgevoerd, er geen enkele taak hoeft te worden uitgevoerd vanwege de puntkomma(;) die aanwezig is in de regel waar de for-lus is gedefinieerd. De lus wordt drie keer uitgevoerd en de waarde van i wordt 3, waarna de rest van de instructie(s) wordt uitgevoerd.
Vraag 4 CPP
#include    using namespace std; int main() {  int i;  i = 1 + (14563);  cout << i;  return 0; } 
Output:
4 
Uitleg: De operator komma () is een binaire operator die de eerste operand evalueert en het resultaat negeert, vervolgens de tweede evalueert en vervolgens de waarde van de tweede retourneert. Hier loopt de associativiteit van de komma ()-operator van links naar rechts. Het is gemakkelijk te begrijpen dat de uitdrukking (14563) 3 oplevert en dat het resultaat 1 + 3 wordt toegewezen aan i.
Vraag 5 CPP
#include    using namespace std; int main() {  int a = 0 b;  b = (a = 50) + 10;  cout << a << '$' << b;  return 0; } 
Output:
50 
Uitleg: De stelling b = (a = 50) + 10; maakt gebruik van het concept van ingebedde opdracht. Hier wordt de waarde 50 toegewezen aan variabele a en het resultaat 50+10 aan b. Vraag 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 
Uitleg: De C++ kan ook rekenkundige berekeningen uitvoeren, rekening houdend met de ASCII-waarden van karakters als de rekenkundige bewerking wordt uitgevoerd op variabelen van het char-datatype. In dit geval is het antwoord 120, wat de ASCII-waarde is voor x.
Vraag 7 CPP
#include   using namespace std; int main(int x) {  static int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
4321 
Uitleg: Elk getal dat niet nul is in C++ wordt als echte waarde behandeld. Hier in deze code heeft de if-instructie de neiging de waarde van i te verlagen, maar binnen het blok if wordt de functie main() keer op keer aangeroepen. Hier lijkt het programma zich in een oneindige lus te bevinden, maar de variabele i is statisch van aard en heeft zijn levensduur tot de uitvoering. Daarom stopt het programma als i 0 wordt.
Vraag 8 CPP
#include   using namespace std; int main(int x) {  int i = 5;  if (--i)  {  cout << i;  main(10);  }  return 0; } 
Output:
infinite loop 
Uitleg: Elk getal dat niet nul is in C++ wordt als echte waarde behandeld. Hier in deze code heeft de if-instructie de neiging om de waarde van i te verlagen, maar binnen het blok van if wordt de functie main() keer op keer aangeroepen (alle instructies worden nu uitgevoerd alsof het een nieuw programma is), vandaar dat de uitvoering van het programma in een oneindige lus terechtkomt omdat er geen beëindigingsvoorwaarde is. Quiz maken