C | Operadores | Pregunta 27

#include <stdio.h>
#include <stdlib.h>
int top=0;
int fun1()
{
    char a[]= {'a','b','c','(','d'};
    return a[top++];
}
int main()
{
    char b[10];
    char ch2;
    int i = 0;
    while (ch2 = fun1() != '(')
    {
        b[i++] = ch2;
    }
    printf("%s",b);
    return 0;
}

(A) abc(
(B) abc
(C) 3 caracteres especiales con valor ASCII 1
(D) String vacía

Respuesta: (C)
Explicación: La precedencia de ‘!=’ es mayor que ‘=’. Entonces, la expresión «ch2 = fun1() != ‘(‘” se trata como “ch2 = (fun1() != ‘(‘ )”. Entonces, el resultado de “fun1() != ‘(‘ ” se asigna a ch2. El resultado es 1 para primeros tres caracteres El carácter de sonrisa tiene valor ASCII 1. Dado que la condición es verdadera para los primeros tres caracteres, obtienes tres caritas.

Si ponemos un paréntesis en la declaración while, obtenemos «abc».

#include <stdio.h>
#include <stdlib.h>
int top=0;
int fun1()
{
    char a[]= {'a','b','c','(','d'};
    return a[top++];
}
int main()
{
    char b[20];
    char ch2;
    int i=0;
    while((ch2 = fun1()) != '(')
    {
        b[i++] = ch2;
    }
    b[i] = '\0';
    printf("%s",b);
    return 0;
}

Este programa modificado imprime el cuestionario «abc»
de esta pregunta

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 *