所以我只花了CS101 C++測驗,這是問題之一:我可以在if語句中使用「x = 2」作爲參數嗎?
int x=5;
if(x=2)
cout <<"this is true"<<endl;
else
cout <<"this is false"<<endl;
cout <<"this is all folks"<<endl;
以下的選擇是什麼可以是可能的輸出
a. this is true
b. this is false
c. this is true
this is false
d. this is true
this is all folks
e. None of the above
現在給我注意到,if語句正在測試一個作業,所以我盤旋e。),因爲我覺得輸出應該是一個語法錯誤。我認爲一項任務不能被評估爲真或假。教練標記我錯了。原因是大於0的論點是真實的。我告訴教授,除非x = 2被括號包圍,否則這是不可能的。 x = 2本身不是真或假。然後教師表示,我們不應該期望測試或測驗中的代碼能夠運行,即邏輯測試不是語法。但邏輯上x = 2既不是真也是假,對嗎?
我沒有爭論的要點,我錯了只有兩分之一。但教練堅持認爲測驗題寫得正確並結束了對話。我不認爲教練讚賞我在這方面問她......她粗暴地把我甩開。無論如何,我用vim/g ++運行代碼,它給了我語法錯誤,建議我在作業周圍放上括號。難道一些編譯器更挑剔?
「我使用vim/g的跑++編寫代碼,它給了我語法錯誤」 - 一個*錯誤*,或者只是一個*警告*? – Matt
是的,'g ++'不會給你一個錯誤,除非你在命令行指定'-Werror'。賦值是C中的表達式,所以'x = 2'在賦值之後的值爲'x',顯然是'2',這就是爲什麼你可以像'a = b = c = 2;' –