¿Cuál es el resultado del siguiente programa?
#include <stdio.h> int foo(int* a, int* b) { int sum = *a + *b; *b = *a; return *a = sum - *b; } int main() { int i = 0, j = 1, k = 2, l; l = i++ || foo(&j, &k); printf("%d %d %d %d", i, j, k, l); return 0; }
(A) 1 2 1 1
(B) 1 1 2 1
(C) 1 2 2 1
(D) 1 2 2 2
Respuesta: (A)
Explicación: El control en el OR lógico va a la segunda expresión solo si la primera expresión da como resultado FALSO. Se llama a la función foo() porque i++ devuelve 0 (post-incremento) después de incrementar el valor de i a 1. La función foo() en realidad intercambia los valores de dos variables y devuelve el valor del segundo parámetro. Entonces, los valores de las variables j y k se intercambian y la expresión OR se evalúa como VERDADERA.
Cuestionario de esta pregunta
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