Prerrequisito: Pre-incremento y Post-incremento
Pregunta 1
C
#include <stdio.h> int main() { char* p = "mayhem"; char c; int i; for (i = 0; i < 3; i++) { c = *p++; } printf("%c", c); return 0; }
- y
- h
- mi
- a
Answer : y
Explicación: El puntero ‘p’ apunta a la tercera ubicación de la array de caracteres. La razón es que en la iteración del bucle ‘for’, el valor del puntero de carácter ‘p’ se ha incrementado tres veces.
Pregunta 2
CPP
#include<stdio.h> void test(char c[]) { c=c+2; c--; printf("%c",*c); } int main() { char ch[5]={'p','o','u','r'}; test(ch); return 0; }
¿Cuál es la salida del programa anterior?
- pags
- o
- tu
- r
Answer: o
Explicación: cuando se pasa la array de caracteres ‘ch’ como argumento a la función ‘test()’, se pasa la dirección base de la array ‘ch[]’. La variable ‘c’ en la función ‘test()’ apunta a la segunda ubicación de la array. Y luego decrece en 1 apuntando a ‘o’.
Pregunta 3
C
#include<stdio.h> int main() { int i; char ch[] = {'x', 'y', 'z'}; char *ptr, *str1; ptr = ch; str1 = ch; i = (*ptr-- + ++*str1) - 10; printf("%d", i); return 0; }
¿Cuál es el resultado del programa anterior si los valores ASCII de los caracteres ‘x’=120, ‘y’=121, ‘z’=122?
- 231
- 233
- 232
- 363
Answer : 231
Explicación: El puntero ptr apunta a ‘x’.
Paso 1: Dado que es una operación posterior al decremento, el valor sigue siendo 120 y luego se decrementa.
Paso 2: El puntero str1 apunta a ‘x’. Dado que ++ y * tienen el mismo nivel de precedencia, la evaluación comienza de derecha a izquierda. Para la expresión ++*str1, en primer lugar se evalúa *str1, lo que da 120, es decir, el equivalente ASCII de x. A continuación, evaluamos el incremento de prefijo ++120 = 121. Por lo tanto, el resultado final es (120+121)-10=131
Pregunta 4: ¿Cuál será el resultado del siguiente programa?
CPP
#include<stdio.h> int main(void) { char *ptr = "Linux"; printf("\n [%c] \n", *ptr++); printf("\n [%c] \n", *ptr); return 0; }
Producción :
[L] [i]
Explicación: dado que la prioridad de ‘++’ y ‘*’ es la misma, el procesamiento de ‘*ptr++’ se realiza de derecha a izquierda. Siguiendo esta lógica, ptr++ se evalúa primero y luego *ptr. Así que ambas operaciones dan como resultado ‘L’. Ahora que se aplicó un sufijo ‘++’ en ptr, el siguiente printf() imprimiría ‘i’.
Pregunta 5: ¿Cuál será el resultado del siguiente programa?
CPP
#include <stdio.h> int main() { int num1 = 5; int num2 = 3; int num3 = 2; num1 = num2++; num2 = --num3; printf("%d %d %d", num1, num2, num3); return 0; }
- 231
- 311
- 327
- 321
Answer:311
Este artículo es una contribución de Brahmani Sai . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado 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