Prediga la salida de los siguientes programas C++.
Pregunta 1
#include <iostream> using namespace std; int main() { int a = b = c = 0; cout << a << "*" << b << "*" << c; return 0; }
Producción:
Compile time error!
Explicación:
una sentencia enstringda no se puede utilizar para inicializar variables en el momento de la declaración. De ahí el enunciado a = b = c = 0; es una declaración ilegal. Sin embargo, sigue una sintaxis legal y se puede usar en C++ o C.
int a,b,c; a = b = c = 0;
Pregunta 2
#include <iostream> using namespace std; int main() { for ( ; ; ) cout << "blank"; return 0; }
Producción:
Infinite Loop!
Explicación:
Dado que la inicialización, la condición de prueba y la condición de incremento/decremento faltan dentro del ciclo for, la ejecución quedará atrapada en un ciclo infinito.
Pregunta 3
#include <iostream> using namespace std; int main() { int i; for (i=0; i<3; i++); cout << "hello!" <<i; return 0; }
Producción:
hello!3
Explicación:
Hello!3 es el resultado porque cuando se ejecuta for loop no tiene ninguna tarea que hacer debido al punto y coma (;) presente en la línea donde se ha definido for loop. El ciclo se ejecutará tres veces y el valor de i se convertirá en 3, luego se ejecutará el resto de las declaraciones.
Pregunta 4
#include <iostream> using namespace std; int main() { int i; i = 1 + (1,4,5,6,3); cout << i; return 0; }
Producción:
4
Explicación:
el operador de coma (,) es un operador binario que evalúa el primer operando y descarta el resultado y luego evalúa el segundo y luego devuelve el valor del segundo. Aquí la asociatividad del operador coma (,) es de izquierda a derecha y es fácil de entender que la expresión (1,4,5,6,3) se evalúa como 3 y luego el resultado 1 + 3 se asigna a i.
Pregunta 5
#include <iostream> using namespace std; int main() { int a = 0, b; b = (a = 50) + 10; cout << a << "$" << b; return 0; }
Producción:
50$60
Explicación:
El enunciado b = (a = 50) + 10; utiliza el concepto de asignación incrustada. Aquí, el valor de 50 se asigna a la variable a y el resultado 50+10 se asigna a b.
Pregunta 6
#include<iostream> using namespace std; int main() { char a = 30, b = 40, c = 10; char d = (a*b)/c; cout << int(d); return 0; }
Producción:
120
Explicación:
C++ también puede realizar cálculos aritméticos considerando los valores ASCII de los caracteres si la operación aritmética se realiza en variables de tipo de datos char. Aquí, en este caso, la respuesta es 120, que es el valor ASCII de x.
Pregunta 7
#include<iostream> using namespace std; int main(int x) { static int i = 5; if (--i) { cout << i; main(10); } return 0; }
Producción:
4321
Explicación:
cualquier número distinto de cero en C++ se trata como un valor verdadero. Aquí, en este código, la instrucción if tiende a disminuir el valor de i pero dentro del bloque de if, la función main() se llama una y otra vez. Aquí el programa parece estar en bucle infinito, pero la variable i es de naturaleza estática, tiene su tiempo de vida hasta la ejecución, por lo tanto, el programa se detendrá si i se convierte en 0.
Pregunta 8
#include<iostream> using namespace std; int main(int x) { int i = 5; if (--i) { cout << i; main(10); } return 0; }
Producción:
infinite loop
Explicación:
cualquier número distinto de cero en C++ se trata como un valor verdadero. Aquí, en este código, la declaración if tiende a disminuir el valor de i pero dentro del bloque de if, la función main() se llama una y otra vez (todas las declaraciones ahora se ejecutarán como si fuera un programa nuevo), por lo tanto, la ejecución del programa quedará atrapado en un bucle infinito ya que no hay una condición de terminación.
Este artículo es una contribución de Avinash Kumar Singh . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA