📜  C |运营商|问题27

📅  最后修改于: 2021-05-28 05:49:22             🧑  作者: Mango

#include 
#include 
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个特殊字符,ASCII值为1
(D)空弦答案: (C)
说明: ‘!=’的优先级高于’=’。因此将表达式“ ch2 = fun1()!=’(’”视为“ ch2 =(fun1()!=’(’)”。因此将“ fun1()!=’(’”)的结果分配给ch2 。对于前三个字符,结果为1。微笑字符的ASCII值为1。由于对于前三个字符,条件为true,所以您得到三个表情符号。

如果我们在while语句中加上方括号,则会得到“ abc”。

#include 
#include 
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;
}

修改后的程序打印“ abc”
这个问题的测验