從你的代碼判斷,我假設你想找到最小的3個數字。但是,使用逗號是而不是是正確的方式,因爲逗號是用於其他目的的操作數。
if ((variable_1 [operator] variable_2) [AND/OR/NOT operator] (variable_1 [operator] variable_3) ...)
&&
運算符(稱爲邏輯AND運算符)是您應該使用的運算符。使用此運算符時,只有當「& &」兩側的兩個比較均爲真時,表達式纔會返回true。它遵循語法:
(x > y) && (x > z) // Only if x is greater than y and z will the expression return true.
我已經固定的代碼爲你下面(有除了if語句許多錯誤:
int main()
{
// These variables don't have to be global for your case
int var1 = 0;
int var2 = 0;
int var3 = 0;
cout << "Write 3 integer numbers" << endl;
cin >> var1 >> var2 >> var3; // You don't need num1, num2, num3.
if ((var1 < var2) && (var1 < var3))
cout << var1 << " is smaller"<< endl; // If there is only 1 statement in your if-condition, then curly braces are unrequired, just a styling tip I like.
// I don't want to give the full solutions here, as this is your learning experience. Just fixed dome other errors in your code. You can use the first if-statement to do the other else-if statements.
system("pause");
}
從if語句
除此之外,我會指出出在你的代碼的其他錯誤:
首先,你爲什麼宣佈var1
,var2
和var3
爲全局變量,你的主要功能之外的我? t沒有錯(即使它們是全局變量,代碼也能正常工作),但在你的情況下,它是不需要的。其次,你比較變量var1
,var2
和var3
在你的if條件。然而,他們設置爲零,而你把輸入3個完全不同的變量,num1
,num2
,num3
。這使得var1
,var2
和var3
保持不變,導致0,0和0之間的比較。您不需要num1
,num2
,num3
。
第三,你的代碼的邏輯本身是容易出錯,尤其是當一些數字輸入的是相同的。嘗試輸入(1,1,1)或(1,1,2)。我沒有解決這個問題,因爲它會涉及到更改很多代碼本身。
順便說一句,如果你想知道逗號運算符做什麼,我在下面解釋它:
[來源:運營商 - C++教程] (http://www.cplusplus.com/doc/tutorial/operators/)
逗號運算符(,)用於分隔作爲單個表達式的佔位符找到的多個表達式。當評估一組表達式以給出最終結果時,將使用最遠右側的表達式。看到這個例子:
int number, number2;
number2 = (number = 5, number += 7, number/4);
cout << number2 << endl;
這裏做的事情在這裏是2個變量number
和number2
在這裏聲明。在下一行中,number2
的數字除以4,最初設置爲5,然後增加7.第三行輸出4,爲(5 + 7)/ 4 = 3.
希望這有所幫助。如果您需要進一步解釋,澄清或不清楚的地方,請在郵件中通知我。祝你好運!
你不能使用那樣的逗號。 – TheUndeadFish
'var2
在表達式中,','運算符評估它的兩個操作數並返回第二個操作數的結果。所以你的前兩個'if'語句只是測試'var3'是否爲非零,並且類似於最後一個。 –