Salida de programas C | Conjunto 46

QUE.1 ¿Cuál sería la salida después del programa C?

#include <stdio.h>
int main()
{
    char* str = "IncludeHelp";
    printf("%c\n", *&*str);
    return 0;
}

OPCIÓN
a) Error
b) Incluir Ayuda
c) I
d)*I

 Answer: c

Explicación: & es un operador de referencia, * es un operador de desreferencia . Podemos usar estos operadores cualquier número de veces. str señala el primer carácter de IncludeHelp, *str señala “I”, * & de nuevo hace referencia y elimina la referencia al valor de str.

QUE.2 ¿Cuál sería la salida después del programa C?

#include <stdio.h>
int main()
{
    int iVal;
    char cVal;
    // void pointer
    void* ptr;
    iVal = 50;
    cVal = 65;
  
    ptr = &iVal;
    printf("value =%d, size= %d\n", *(int*)ptr, sizeof(ptr));
  
    ptr = &cVal;
    printf("value =%d, size= %d\n", *(char*)ptr, sizeof(ptr));
    return 0;
}

OPCIÓN
a) Error
b) valor =50, tamaño= 4
valor =65, tamaño= 4
c) valor =50, tamaño= 4
valor =65, tamaño= 1
d)Valores basura

Answer: b

Explicación: el puntero vacío se puede convertir a cualquier tipo de tipo de datos, y el puntero ocupa 4 bytes (en un compilador de 32 bits). Para imprimir el valor usando un puntero vacío, tendrá que escribir así *(tipo_de_datos*)void_ptr;.

QUE.3 ¿Cuál sería la salida después del programa C?

#include <stdio.h>
int main()
{
    char ch = 10;
    void* ptr = &ch;
    printf("%d, %d", *(char*)ptr, ++(*(char*)ptr));
    return 0;
}

OPCIÓN
a) 11, 11
b) 10, 11
c) ERROR
d) 10, 10

Answer: a

Explicación: *(char*)ptr devolverá el valor de ch, ya que sabemos que printf evalúa de derecha a izquierda. Entonces, ++(*(char*)ptr) aumentará el valor a 11.

QUE.4 ¿Cuál es el resultado del siguiente programa en C?

#include <stdio.h>
int main()
{
    int a = 10, b = 2;
    int* pa = &a, *pb = &b;
    printf("value = %d", *pa/*pb);
    return 0;
}

OPCIÓN
a) 5
b) 5.0
c) ERROR
d) Ninguno de estos

Answer:c

Explicación: ERROR: se encontró un final de archivo inesperado en el comentario. El compilador trata el operador / y * como /*, que resulta ser el comienzo del comentario. Para corregir el error, utilice *pa/ *pb (espacio entre operadores) o *pa/(*pb).

QUE.5 ¿Cuál es el resultado del siguiente programa en C?

#include <stdio.h>
  
int main()
{
    int a = 10;
    int b = 2;
    int c;
  
    c = (a & b);
    printf("c= %d", c);
  
    return 0;
}

OPCIÓN
a) c= 12
b) c= 10
c) c= 2
d) c= 0

Answer:c

Explicación: el operador AND bit a bit (&) copia bit(s) , si existen ambos operandos. Aquí, el binario de a es «1010» y el binario de b es «0010». Por lo tanto, el resultado de la expresión (a y b) es «0010», que es equivalente a 2 en decimal.

Este artículo es una contribución de Ajay Puri(ajay0007) . 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 *