Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如果数字不同于{-1,1,2,-2},则使程序不计数_C - Fatal编程技术网

C 如果数字不同于{-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){

如果数字不同于{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){

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)