Salida del programa C | Conjunto 17

Prediga la salida de los siguientes programas en C.

Pregunta 1

#include<stdio.h>
  
#define R 10
#define C 20
  
int main()
{
   int (*p)[R][C];
   printf("%d",  sizeof(*p));
   getchar();
   return 0;
}

Salida: 10*20*sizeof(int) que es “800” para compiladores con tamaño entero de 4 bytes.
El puntero p está desreferenciado, por lo tanto, produce el tipo del objeto. En el presente caso, es una array de arrays de enteros. Entonces, imprime R*C*sizeof(int).
Gracias a Venki por sugerir esta solución.

Pregunta 2

#include<stdio.h>
#define f(g,g2) g##g2
int main()
{
   int var12 = 100;
   printf("%d", f(var,12));
   getchar();
   return 0;
}

Salida: 100
El operador ## se llama » Token-Pasting» o Operador «Fusionar» . Combina dos tokens en un token. Entonces, después del preprocesamiento , la función principal se convierte en la siguiente e imprime 100.

int main()
{
   int var12 = 100;
   printf("%d", var12);
   getchar();
   return 0;
}

Pregunta 3

#include<stdio.h>
int main() 
{
   unsigned int x = -1;
   int y = ~0;
   if(x == y)
      printf("same");
   else
      printf("not same");
   printf("\n x is %u, y is %u", x, y);
   getchar();
   return 0;
}

Salida: «mismo x es MAXUINT, y es MAXUINT» Donde MAXUINT es el valor máximo posible para un entero sin signo.
-1 y ~0 esencialmente tienen el mismo patrón de bits, por lo tanto, x e y deben ser iguales. En la comparación, y se promociona a sin firmar y se compara con x. El resultado es «igual». Sin embargo, cuando se interpretan como firmados y sin firmar, sus valores numéricos diferirán. x es MAXUNIT y y es -1. Como también tenemos %u para y, la salida será MAXUNIT y MAXUNIT.
Gracias a Venki por la explicación.

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 *