¿Cuál es la salida del siguiente programa?
#include <stdio.h> int main() { int a = 1; int b = 1; int c = a || --b; int d = a-- && --b; printf("a = %d, b = %d, c = %d, d = %d", a, b, c, d); return 0; }
(A) a = 0, b = 1, c = 1, d = 0
(B) a = 0, b = 0, c = 1, d = 0
(C) a = 1, b = 1, c = 1, d = 1
(D) a = 0, b = 0, c = 0, d = 0
Respuesta: (B)
Explicación: Entendamos la línea de ejecución por línea.
Los valores iniciales de a y b son 1.
// Since a is 1, the expression --b // is not executed because // of the short-circuit property // of logical or operator // So c becomes 1, a and b remain 1 int c = a || --b; // The post decrement operator -- // returns the old value in current expression // and then updates the value. So the // value of expression a-- is 1. Since the // first operand of logical and is 1, // shortcircuiting doesn't happen here. So // the expression --b is executed and --b // returns 0 because it is pre-increment. // The values of a and b become 0, and // the value of d also becomes 0. int d = a-- && --b;
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