C | Operadores | Pregunta 6

¿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

Deja una respuesta

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