Salida de programas C | Conjunto 36

1. ¿Cuál será el resultado de lo siguiente?

void main()
{
    int const* p = 5;
    printf("%d", ++(*p));
}

Opciones:
A. 6
B. 5
C. Valor basura
D. Error del compilador

Answer : D

Explicación: dará un error de tiempo de compilación porque estamos tratando de cambiar el valor constante. p es un puntero a un «entero constante». Pero tratamos de cambiar el valor del «entero constante».

2. ¿Cuál será el resultado de lo siguiente?

void main()
{
    char* p;
    printf("%d %d", sizeof(*p), sizeof(p));
}

Opciones:
A. 1 1
B. 1 8
C. 2 1
D. 2 2

Answer : B

Explicación: el operador sizeof() proporciona la cantidad de bytes que toma su operando. P es un puntero de carácter, que necesita un byte para almacenar su valor (un carácter). Por lo tanto, sizeof(*p) da un valor de 1. Dado que necesita dos bytes para almacenar la dirección del puntero de carácter, sizeof(p) da 8.

3. ¿Cuál será el resultado de lo siguiente?

void main()
{
    int m, i = 0, j = 1, k = 2;
    m = i++ || j++ || k++;
    printf("%d %d %d %d", m, i, j, k);
}

Opciones:
A. 1 1 2 3
B. 1 1 2 2
C. 0 1 2 2
D. 0 1 2 3

Answer : B

Explicación: en una expresión que implica || operador, la evaluación se lleva a cabo de izquierda a derecha y se detendrá si uno de sus componentes se evalúa como verdadero (un valor distinto de cero).
Así que en la expresión dada m = i++ || j++ || k++.
Se detendrá en j y asignará el valor actual de j en m.
por lo tanto m = 1, i = 1, j = 2 y k = 2 (ya que k++ no se encontrará, por lo que su valor sigue siendo 2)

4. ¿Cuál será el resultado de lo siguiente?

void main()
{
    int i = 0;
    printf("%d %d", i, i++);
}

Opciones:
A. 0 1
B. 1 0
C. 0 0
D. 1 1

Answer : B

Explicación: Dado que la evaluación es de derecha a izquierda. Entonces, cuando la declaración de impresión ejecuta el valor de i = 0, ya que se ejecuta de derecha a izquierda, cuando i ++ se ejecutará primero e imprimirá el valor 0 (desde su incremento posterior) y después de imprimir el valor 0 de i se convertirá en 1.

5. ¿Cuál será el resultado de lo siguiente?

#include <stdio.h>
int main(void)
{
    char p;
    char buf[10] = { 1, 2, 3, 4, 5, 6, 9, 8 };
    p = (buf + 1)[5];
    printf("%d", p);
    return 0;
}

Opciones:
A. 5
B. 6
C. 9
D. Error

Answer : C

Explicación: x[i] es equivalente a *(x + i), entonces (buf + 1)[5] es *(buf + 1 + 5), o buf[6].

Este artículo es una contribución de Rishabh Jain . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@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

Deja una respuesta

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