Salida del programa C++ | conjunto 20

Prediga la salida debajo del programa

#include<iostream>
using namespace std;
int main()
{
    int x = 1 , y = 1, z = 1;
  
    cout << (++x || ++y && ++z ) << endl;  
  
    cout << x << " " << y << " " << z ;          
  
    return 0;
}

Explicación: –
Se basa en el hecho de que cómo funcionan LOGICAL-OR y LOGICAL-AND. Tenga en cuenta que Compiler lee los operadores OR y AND de izquierda a derecha. Consideremos los siguientes casos:

#include<iostream>
using namespace std;
int main()
{
    int x = 1 , y = 1;
    cout << ( ++x  || ++y ) << endl;   // outputs 1;
    cout << x << " " << y;             // x = 2 , y = 1;
    return 0;
}

Producción:

1
2 1

Una vez que el compilador detecta «verdadero» a la IZQUIERDA del O lógico, ¡NO VA A EVALUAR EL LADO DERECHO!, porque incluso uno es verdadero, ¡toda la expresión «O» se vuelve verdadera!. SO el compilador omite la parte DERECHA y muestra el resultado como 1. Entonces, y no se incrementa aquí, ¡porque el compilador omitió leerlo!

#include<iostream>
using namespace std;
int main()
{
    int x = 1 , y = 1;
    cout << ( ++x && ++y ) << endl;     //outputs 1;
    cout << x << " " << y;              // x = 2 , y = 2;
    return 0;
}

Producción:

1
2 2

AND LÓGICO necesita evaluar tanto la parte derecha como la izquierda (¡Piénselo!) Entonces se evalúan tanto la parte izquierda como la derecha, incrementando así tanto x como y aquí.

#include<iostream>
using namespace std;
int main()
{
    int x = 1 , y = 1, z = 1;
    cout << ( ++x || ++y && ++z ) << endl;    //outputs 1;
    cout << x << " " << y << " " << z ;       //x = 2 , y = 1 , z = 1;
    return 0;
}

Producción:

1
2 1 1

Aquí el compilador incrementa x primero y luego detecta un OR LÓGICO. Tenemos una cantidad real en el lado izquierdo. El compilador SO no leerá la parte correcta. Por lo tanto, ¡incrementar x e y, z sigue siendo el mismo!

Este artículo es una contribución de Nishant . 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *