2016-08-19 69 views
-1

爲什麼我不能得到正確的字符串。我在表達中有什麼錯誤?我無法弄清楚。我儲存了好幾個小時。爲什麼我的或操作員不工作?

#include <iostream> 
#include <stdlib.h> 
#include <stdio.h> 
#include <string> 
using namespace std; 

int main(){ 
string var = "y"; 
string constant ="y"; 

if ((var != constant)||(var != "n")){ 
cout << "error"; 
} 
else { 
cout << "right" // this is what it should print 
} 
} 

我明白,或運營商使用||作爲符號。那麼爲什麼我的程序不能執行它的任務

+0

預期結果是什麼?根據「if」條件,代碼將打印出「錯誤」。 – songyuanyao

+0

'var!=「n」'是真的,所以整個表達式都是真實的。 – dasblinkenlight

+0

'var'不能同時等於兩個不同的東西... – Dmitri

回答

2

你的程序結果是正確的。

由於var被設定爲 「y」,則表達式

var != "n" 

顯然是正確的。

這樣,充分表達

if (.... || var != "n") 

評估爲真。根據定義「任何事情或真實」總是如此。

不管你想要你的else語句執行多少,它都不會。因爲它不應該。

+0

明白了!謝謝! –

0

你的程序沒有問題(除了第14行的語法錯誤)。您的測試如果varconstant不等於, var不等於'n'。這個或者聲明工作正常,因爲你基本上在說:if (condition or true),這將永遠是真的,因爲如果他或者操作符只發現一個條件爲true,它將返回true。

我相信你想要的是和,&&,運營商。只有當它的兩個條件都成立時它纔會返回true。

這就是上面說的,即使是&&運營商,你仍然不得不改變你的代碼。你的錯誤\錯誤沒有意義。你告訴你的程序:

#pseudo code 

if(false and false) 
    print error 
else 
    print ... 

你的程序只是服從你設置的規則。您的else聲明上方的if聲明將從開始,因爲if聲明總是會評估爲true,因此不會到達