2012-12-10 57 views
0

使用代碼C:燒焦不工作

sscanf(argv[1], "%d", &num1); 
    sscanf(argv[2], "%c", &op); 
    sscanf(argv[3], "%d", &num2); 

     if ((op != '-')||(op != '*')||(op != '/')||(op != '+')) 
    { 
     puts("Error:"); 
     printf("'%c' is not a valid operator", op); 
     return 0; 
    } 

編譯罰款邏輯運算符。

但是,不適用於任何輸入。例如,當輸入爲4個+ 7

控制檯打印:

Error:

'+' is not a valid operator

編輯:沒有這個錯誤校驗碼,該程序的其餘部分是否正常工作,包括基於運算switch語句!

+0

您需要用'&&'替換您的'||'。 –

+0

_char邏輯運算符不working_是相當錯誤的,除非您使用破碎的編譯器。 – mah

+0

使用&& 代替|| –

回答

3

有意義,因爲你的情況總是如此。

(op != '-')||(op != '*')||(op != '/')||(op != '+') 

甚至

(op != '-')||(op != '*') 

將始終評估爲true

你基本上說:「如果op不是-op* ...做什麼」。

您可能打算使用&&來代替。

+0

如果不等於Z:那麼做X,否則:做Y.它等於Z,但是X ...? – Stumbler

+1

@鄧肯不,你的條件是「如果不等於Z或不等於Y或....」。 –

+0

愚蠢的我。我想我正在考慮獨家或。 :/ – Stumbler

2

你想

if ((op != '-')&&(op != '*')&&(op != '/')&&(op != '+')) 
3

你有一個邏輯問題。您應該用AND更改OR(||)運算符(& &)