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