Salida de programas en C | conjunto 7

Predecir la salida de los siguientes programas
Pregunta 1 
 

c

int main()
{
    int i = 0;
    while (i <= 4)
    {
       printf("%d", i);
       if (i > 3)
        goto inside_foo;
       i++;
    } 
    getchar();
    return 0;
}
 
void foo()
{
   inside_foo:
     printf("PP");
}

Salida: Error del compilador: Etiqueta «inside_foo» usada pero no definida.
Explicación: El alcance de una etiqueta está dentro de una función. No podemos ir a una etiqueta desde otra función.

Pregunta 2 
 

c

#define a 10
int main()
{
  #define a 50
  printf("%d",a);
   
  getchar();
  return 0;
}

Salida: 50 El
preprocesador no da ningún error si redefinimos una directiva de preprocesador. Sin embargo, puede dar una advertencia. El preprocesador toma el valor más reciente antes del uso de y lo coloca en lugar de a.
Ahora intenta seguir 
 

c

#define a 10
int main()
{
  printf("%d ",a); 
  #define a 50
  printf("%d ",a);
   
  getchar();
  return 0;
}

Pregunta 3 
 

c

int main()
{
     char str[] = "geeksforgeeks";
     char *s1 = str, *s2 = str;    
     int i;
      
     for(i = 0; i < 7; i++)
     {
        printf(" %c ", *str);
        ++s1;    
     }
      
     for(i = 0; i < 6; i++)
     {
        printf(" %c ", *s2);
        ++s2;    
      }
     
      getchar();
      return 0;
}

Salida 
ggggggggeeksf
Explicación 
Tanto s1 como s2 se inicializan en str. En el primer ciclo, se imprime str y se incrementa s1, por lo que el primer ciclo imprimirá solo g. En el segundo ciclo, s2 se incrementa y s2 se imprime, por lo que el segundo ciclo imprimirá «geeksf»

Pregunta 4 
 

c

int main()
{
    char str[] = "geeksforgeeks";
    int i;
    for(i=0; str[i]; i++)
        printf("\n%c%c%c%c", str[i], *(str+i), *(i+str), i[str]);
    
    getchar();
    return 0;
}

Salida: 
gggg 
eeee 
eeee 
kkkk 
ssss 
ffff 
oooo 
rrrr 
gggg 
eeee 
eeee 
kkkk 
ssss
Explicación: Las 
siguientes son diferentes formas de indexar tanto la array como la string.
arr[i] 
*(arr + i) 
*(i + arr) 
i[arr]
Así que todos imprimen el mismo carácter.

Pregunta 5 
 

c

int main()
{
    char *p;
    printf("%d %d ", sizeof(*p), sizeof(p));
    
    getchar();
    return 0;
}

Salida: Depende del compilador. Obtuve la salida como «1 4»
Explicación: 
la salida del programa anterior depende del compilador. sizeof(*p) da el tamaño del carácter. Si los caracteres se almacenan como 1 byte, entonces sizeof(*p) da 1. 
sizeof(p) da el tamaño de la variable de puntero. Si las variables de puntero se almacenan como 4 bytes, entonces da 4. 
 

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 *