Salida de programas en C | Conjunto 15

Prediga la salida de los siguientes programas en C. 
Pregunta 1

C

#include<stdio.h>
int main(void)
{
  int a = 1;
  int b = 0;
  b = ++a + ++a;
  printf("%d %d",a,b);
  getchar();
  return 0;
}

Salida: 3 6

Explicación: ++ tiene prioridad sobre + y opera de derecha a izquierda. Por lo tanto, ++a más a la derecha da a=2 y ++a a la izquierda da a=3. Ahora, al evaluar, b=3+3. Como después del segundo ++a, tenemos a=3. Por lo tanto b=3+3=6 y a=3. De ahí la salida.
Pregunta 2 

C

#include<stdio.h>
 
int main()
{
  int a[] = {1, 2, 3, 4, 5, 6};
  int *ptr = (int*)(&a+1);
  printf("%d ", *(ptr-1) );
  getchar();
  return 0;
}

Salida: 6 
&a es la dirección de toda la array a[] . Si sumamos 1 a &a , obtenemos “dirección base de a[] + tamaño de(a)”. Y este valor se encasilla en int *. Así que ptr – 1 apunta al último elemento de a[] 
Escriba comentarios si encuentra que alguna de las respuestas/explicaciones es incorrecta, o si desea compartir más información sobre los temas discutidos 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 *