亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

bool a = ++x * x > 3;這行表達式有人能解釋一下,是絕對正確的么?

C++編譯器并沒有規定++運算符的求值順序,我覺得C#應該也是如此,所以 bool a = ++x * x > 3;這行表達式有人能解釋一下,是絕對正確的么?有沒有人查過標準。

正在回答

3 回答

http://img1.sycdn.imooc.com//594d331f000117e103850474.jpg因為上面的式子沒有括號,那就先運行一元運算符++x,即x+1,然后是 乘除的優先級比較高,那就接著運行乘法*,即(x+1)*x ,然后 得到的值 與3相比較,判斷是否正確,把返回的bool值賦值給了bool a 。祝你學習順利!

1 回復 有任何疑惑可以回復我~
#1

慕無忌7395479 提問者

我是C++程序員,在這里還是要科普一下C++的知識,C++里面可千萬別這么想,C++標準沒有規定表達式必須從左到右求值。
2017-07-22 回復 有任何疑惑可以回復我~

阿斯頓撒打算大所多

0 回復 有任何疑惑可以回復我~

首先C#教科書是規定了++運算符的,學一門學問還是以教科書為準,不要以自己的經驗,況且還是一門軟件語言。其次,這個表達式沒有問題,如果賦值x=1,那么++x*x=4,顯然是先計算的++x,x自增1,因為是前置遞增,所以++x=2,計算后的變量x也等于2。那么a為TRUE.你自己可以在軟件中測試。

3 回復 有任何疑惑可以回復我~
#1

慕無忌7395479 提問者

我在軟件中測試過,確實是正確的,手上沒有關于標準的書,我本身對C++比較熟悉,在C++語言標準中有明確的說明,表達式的求值順序是不一定的,編譯器決定何時求值,但是我手上沒有C#的標準說明,不知道這個++表達式是何時求值的,后來查了百度,貌似C#語言規定了表達式的求值順序,必須是從左到右進行求值。關于C++的部分,你可以試試,發行版和調試版本的結果不一樣,優化程度不用結果也不一樣!
2017-05-01 回復 有任何疑惑可以回復我~
#2

wzh2664219055

int x = 1 x++ *x 和 ++x *x 結果相同嗎?我是新手
2018-07-18 回復 有任何疑惑可以回復我~
#3

努力吧少年4369158 回復 wzh2664219055

不同。
2018-07-19 回復 有任何疑惑可以回復我~
#4

HUBanghao

受教了
2022-01-27 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消

bool a = ++x * x > 3;這行表達式有人能解釋一下,是絕對正確的么?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號