为什么这个程序会跳过这个程序中的scanf

问题描述 投票:0回答:1

任何时候我在程序中运行这个函数

void treeInput(){
    char temp;
    int x, tempRow, tempColm;
    while(x=0){
        scanf(" %c ", &temp);
        if(temp == 'Q'){
            x=1;
        } else if(temp == 'A'){
            for(int i = 0; i<TEMP; i++){
                for(int j = 0; j<TEMP; j++){
                    forest[i][j] = 'T';
                }
            }
        } else if (temp == 'T'||'E'){
            scanf("%d", &tempRow);
            scanf("%d", &tempColm);
            forest[tempRow][tempColm] = temp;
        }
    }
}

它跳过了 scanf ,使函数的其余部分无效,并且不知道如何使其工作

我尝试在 scanf 中的 %c 之前添加一个空格,但这不起作用,它仍然会跳过它

c char scanf
1个回答
0
投票
temp == 'T'||'E'

相当于

temp == ('T'||'E')

||
的左侧大小为非零数字(如此处的情况)时,其计算结果为
1
。所以上面相当于

temp == 1

你想要

temp == 'T' || temp == 'E'
© www.soinside.com 2019 - 2024. All rights reserved.