C 如果数字不同于{-1,1,2,-2},则使程序不计数
如果数字不同于{1,-1,-2,-2},我真的很难让计数器不计数 以下是我想做的:C 如果数字不同于{-1,1,2,-2},则使程序不计数,c,C,如果数字不同于{1,-1,-2,-2},我真的很难让计数器不计数 以下是我想做的: if(n == 1 || -1 || 2 || -2){ cont++; } else{ } 但它不起作用,即使数字与上述数字不同,程序仍继续计数 以下是完整的代码: int main(void){ int n,pri,ult,dir,esq,cima,baixo; int cont = 0; int soma = 0; scanf("%d", &n); while (n != 0){
if(n == 1 || -1 || 2 || -2){
cont++;
}
else{
}
但它不起作用,即使数字与上述数字不同,程序仍继续计数
以下是完整的代码:
int main(void){
int n,pri,ult,dir,esq,cima,baixo;
int cont = 0;
int soma = 0;
scanf("%d", &n);
while (n != 0){
soma = cont;
if (n == 1)
{
dir = n;
}
if (n == -1)
{
esq = n ;
}
if (n == 2){
cima = n;
}
if (n == -2)
{
baixo = n;
}
if(cont == 1)
{
pri = n;
}
if(n == 1 || -1 || 2 || -2){
cont++;
}
else{
}
ult = n;
scanf("%d", &n);
}
printf("cont %d\n", cont);
if (soma == 0){
printf("O veiculo fez um caminho fechado");
}
else{
printf("O veiculo fez um caminho aberto");
}
}
否,不可能链接逻辑或运算符(
|
)。您需要逐个检查它们。改变
if(n == 1 || -1 || 2 || -2)
到
否则,由于从左到右的求值规则(关联性),最终得到的是
if ( (n == 1) || -1 || 2 || -2)
两者都一样
if( 0 || -1 || 2 || -2)
或
由于|
的其他操作数为非零(TRUE),关于这一行:if(n==1 | |-1 | | 2 | |-2){
C不能执行隐含的目标“if”语句。该行需要是:if(n==1 | | n==2 | n==2)
if( 0 || -1 || 2 || -2)
if( 1 || -1 || 2 || -2)