Ausgabe von C++-Programmen | Satz 22
Sagen Sie die Ausgabe der folgenden C++-Programme voraus. Frage 1 CPP
Frage 2 CPP
Frage 3 CPP
Frage 4 CPP
Frage 5 CPP
Frage 7 CPP
Frage 8 CPP
#include using namespace std ; int main () { int a = b = c = 0 ; cout < < a < < '*' < < b < < '*' < < c ; return 0 ; }
Output: Compile time error!Erläuterung: 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;
Frage 2 CPP
#include using namespace std ; int main () { for ( ; ; ) cout < < 'blank' ; return 0 ; }
Output: Infinite Loop!Erläuterung: Da die Initialisierungstestbedingung und die Inkrementierungs-/Dekrementierungsbedingung in der for-Schleife fehlen, wird die Ausführung in einer Endlosschleife gefangen.
Frage 3 CPP
#include using namespace std ; int main () { int i ; for ( i = 0 ; i < 3 ; i ++ ); cout < < 'hello!' < < i ; return 0 ; }
Output: hello!3Erläuterung: „Hello!3“ ist das Ergebnis, denn wenn die for-Schleife ausgeführt wird, hat sie aufgrund des Semikolons (;) in der Zeile, in der die for-Schleife definiert wurde, keine Aufgabe zu erledigen. Die Schleife wird dreimal ausgeführt und der Wert von i wird 3, dann werden die restlichen Anweisungen ausgeführt.
Frage 4 CPP
#include using namespace std ; int main () { int i ; i = 1 + ( 1 4 5 6 3 ); cout < < i ; return 0 ; }
Output: 4Erläuterung: Der Komma()-Operator ist ein binärer Operator, der den ersten Operanden auswertet und das Ergebnis verwirft, dann den zweiten auswertet und dann den Wert des zweiten zurückgibt. Hier verläuft die Assoziativität des Komma()-Operators von links nach rechts und es ist leicht zu verstehen, dass der Ausdruck (14563) als 3 ausgewertet wird und dann das Ergebnis 1 + 3 i zugewiesen wird.
Frage 5 CPP
#include using namespace std ; int main () { int a = 0 b ; b = ( a = 50 ) + 10 ; cout < < a < < '$' < < b ; return 0 ; }
Output: 50Erläuterung: Die Aussage b = (a = 50) + 10; verwendet das Konzept der eingebetteten Zuweisung. Hier wird der Variablen a der Wert 50 und b das Ergebnis 50+10 zugewiesen. Frage 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: 120Erläuterung: C++ kann auch arithmetische Berechnungen unter Berücksichtigung der ASCII-Werte von Zeichen durchführen, wenn die arithmetische Operation für Variablen des Datentyps char ausgeführt wird. In diesem Fall lautet die Antwort 120, was dem ASCII-Wert für x entspricht.
Frage 7 CPP
#include using namespace std ; int main ( int x ) { static int i = 5 ; if ( -- i ) { cout < < i ; main ( 10 ); } return 0 ; }
Output: 4321Erläuterung: Jede Zahl ungleich Null wird in C++ als wahrer Wert behandelt. Hier in diesem Code neigt die if-Anweisung dazu, den Wert von i zu verringern, aber innerhalb des if-Blocks wird die Funktion main() immer wieder aufgerufen. Hier scheint sich das Programm in einer Endlosschleife zu befinden, aber die Variable i ist von Natur aus statisch und hat ihre Lebensdauer bis zur Ausführung. Daher wird das Programm angehalten, wenn i 0 wird.
Frage 8 CPP
#include using namespace std ; int main ( int x ) { int i = 5 ; if ( -- i ) { cout < < i ; main ( 10 ); } return 0 ; }
Output: infinite loopErläuterung: Jede Zahl ungleich Null wird in C++ als wahrer Wert behandelt. Hier in diesem Code neigt die if-Anweisung dazu, den Wert von i zu verringern, aber innerhalb des if-Blocks wird die Funktion main() immer wieder aufgerufen (alle Anweisungen werden jetzt so ausgeführt, als wäre es ein neues Programm), daher wird die Programmausführung in einer Endlosschleife gefangen, da es keine Beendigungsbedingung gibt. Quiz erstellen