2014-03-03 21 views
2

在我的代碼在C計算器,我碰到一個涉及以下子句中的argc變量語法錯誤:語法錯誤的if語句有或表達++

if (argc==4 || argv[3]="s"){ 
    result=no1 - no2; 
    cout<<result<<endl; 
    return 0; 
} 

而用下面的代碼相同的結構編譯,

if (a || b){ 
    cout << "Line 2 - Condition is true"<< endl ; 
} 

我試圖打破如果表達成兩個單獨的語句:

if (argc==4) 
{ 
if(argv[3]="s") 
{ 
     result=no1 - no2; 
     cout<<result<<endl; 
     return 0; 
} 
    } 

但是,如果命令calculator.exe 10 2 d執行結果是8,這是不正確的。

我將不勝感激任何幫助。

+0

調高編譯器警告 – chris

回答

3

一個簡單的錯字:if (argc==4 || argv[3]="s"),第二個是分配,並將永遠是真實的。將其更改爲相等的測試:

if (argc==4 || strcmp(argv[3], "s") == 0) //strcmp for c strings 
        ^^^ 
+2

我想應該調用,而不是== – billz

+1

STRCMP它應該是'STRCMP(的argv [3], 「S」)== 0'如果你想測試相等。 –

+0

其實應該是'if(argc == 4 ||(strcmp(argv [3],「s」)== 0))' – Steger

1

「argc」的類型爲int。但argv是指向傳遞給程序的每個參數的指針數組,它將它們存儲爲字符串。 ,你不能用==比較字符串。所以請使用strcmp。

(strcpm(argv[3],"s")==0);