2016-05-15 34 views
-1

如果數字與{1,-1不同,我真的很難讓計數器不計數,-2,-2}。如果數字與{-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"); 
} 
} 
+0

關於這一行:'if(n == 1 || -1 || 2 || -2){'C不能做暗示目標'if'語句。該行需要:'if(n == 1 || n == - 1 || n == 2 || n == - 2){' – user3629249

回答

4

不,邏輯OR運算符(||)鏈是不可能的。你需要單獨檢查每一個。更改

if(n == 1 || -1 || 2 || -2) 

if(n == 1 || n == -1 || n == 2 || n == -2) 

否則,由於左到右的評估規則(關聯),你在做什麼最終得到是

if ((n == 1) || -1 || 2 || -2) 

這是一樣的

if(0 || -1 || 2 || -2) 

if(1 || -1 || 2 || -2) 

兩者產生1作爲結果作爲||另一操作數是非零(TRUE)。

+0

哦,這麼簡單!謝謝! – Hugo