C | Arrays | Pregunta 9

Prediga la salida del siguiente programa:

#include <stdio.h>
#define SIZE(arr) sizeof(arr) / sizeof(*arr);
void fun(int* arr, int n)
{
    int i;
    *arr += *(arr + n - 1) += 10;
}
  
void printArr(int* arr, int n)
{
    int i;
    for(i = 0; i < n; ++i)
        printf("%d ", arr[i]);
}
  
int main()
{
    int arr[] = {10, 20, 30};
    int size = SIZE(arr);
    fun(arr, size);
    printArr(arr, size);
    return 0;
}

(A) 20 30 40
(B) 20 20 40
(C) 50 20 40
(D) Error en tiempo de compilación

Respuesta: (C)
Explicación: El quid de la cuestión radica en la expresión: *arr += *(arr + n – 1) += 10; El operador compuesto (aquí += ) tiene asociatividad de derecha a izquierda. Los primeros 10 se agregan al último elemento de la array. Luego, el resultado se agrega al primer elemento de la array.
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 *