課程
/后端開發(fā)
/C
/C語言入門
比如; int a = 3; b = 4;計算a+b%a-b/a+a*b-a++該算式的運算結果以及運算后a的值
2015-08-23
源自:C語言入門
正在回答
前面你說的“但假如是認為a++是先取值而后運算,而a本身并未受到這個運算的影響的話”——你可以這么理解,但你后半句“可以得出“c語言入門”3-4的答案是12”——正相反,恰恰無法得出這個結論。
a++表達式的值就是a當時的值,在當時a的值可以說是不受這個運算的影響的。但a的值最終還是要自增的,只不過這個自增是什么時候發(fā)生的是不確定的,那么整個表達式中前面那幾個a的值該取多少呢?不確定! 你無法確定前面那幾個a是不是已經自增過了,這是因為C標準沒有規(guī)定操作數(shù)的求值順序。表達式是有優(yōu)先級的,但是優(yōu)先運算的表達式的操作數(shù)不一定是優(yōu)先求值,反之亦然。加之a自增的時點本來就不確定,所以無法確定這些a到底該是什么值,那整個表達式的值也就是不確定的了。
如我在那個帖子中最后的那個建議所說:如果有表達式改變了一個操作數(shù)的值,那就不要在這個復合表達式中再次使用這個操作數(shù)。除非你能確定“改變值”和“使用值”的先后順序。
擁抱藍天 提問者
首先說:這題目出錯了!
這道題與運算符優(yōu)先級無關,這個表達式的值是不確定的。
根據(jù)優(yōu)先級,最后的a++先算,a++的值為4,但是a本身的值是什么時候自增的?這是不確定的。所以式子中前面那些a的值也是不確定的。
對上面的解答有疑惑,請看這里?http://idcbgp.cn/qadetail/64864?我的回答,我懶得復制過來了...
onemoo 回復 擁抱藍天 提問者
擁抱藍天 提問者 回復 onemoo
從左到右,先乘除取模,后加減? 這一題結果是12? a運算后為4(運算時為3)
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
3 回答運算符的運算的先后順序?
2 回答運算符的優(yōu)先級順序呢求解
8 回答關于算術運算中先后順序的
3 回答算法的先后順序
1 回答算術運算符的優(yōu)先順序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-08-26
前面你說的“但假如是認為a++是先取值而后運算,而a本身并未受到這個運算的影響的話”——你可以這么理解,但你后半句“可以得出“c語言入門”3-4的答案是12”——正相反,恰恰無法得出這個結論。
a++表達式的值就是a當時的值,在當時a的值可以說是不受這個運算的影響的。但a的值最終還是要自增的,只不過這個自增是什么時候發(fā)生的是不確定的,那么整個表達式中前面那幾個a的值該取多少呢?不確定! 你無法確定前面那幾個a是不是已經自增過了,這是因為C標準沒有規(guī)定操作數(shù)的求值順序。表達式是有優(yōu)先級的,但是優(yōu)先運算的表達式的操作數(shù)不一定是優(yōu)先求值,反之亦然。加之a自增的時點本來就不確定,所以無法確定這些a到底該是什么值,那整個表達式的值也就是不確定的了。
如我在那個帖子中最后的那個建議所說:如果有表達式改變了一個操作數(shù)的值,那就不要在這個復合表達式中再次使用這個操作數(shù)。除非你能確定“改變值”和“使用值”的先后順序。
2015-08-23
首先說:這題目出錯了!
這道題與運算符優(yōu)先級無關,這個表達式的值是不確定的。
根據(jù)優(yōu)先級,最后的a++先算,a++的值為4,但是a本身的值是什么時候自增的?這是不確定的。所以式子中前面那些a的值也是不確定的。
對上面的解答有疑惑,請看這里?http://idcbgp.cn/qadetail/64864?我的回答,我懶得復制過來了...
2015-08-23
從左到右,先乘除取模,后加減? 這一題結果是12? a運算后為4(運算時為3)