C/C++經典問答

今天百度知道里面看到了一個問題,很有意思,整理了下思路,回答如下。。。

一:

問題:假設i=0;則

1、j=(i++,i++,i++)
2、k=(i++)+(i++)+(i++)
的結果是什麼?是怎麼得出的

我的回答:

j=2

k=9

語法知識,逗號','是語句的分割,第一句:=的右值是一個複合語句,由三個分語句組成,第二句,=的右值只有一個執行語句

執行結果分別是

j = (2, 1, 0) 最終i = 2返回最左邊的執行語句的返回值2 即得 j = 2


k = 3 + 3 + 3,最終i = 6,由於右值只是一個執行語句(i++)+(i++)+(i++)
,又是後自增,故i = 6,  k = 9(後自增符號與前自增符號的區別:後自增在單個執行語句中返回原對象的值,前自增返回自增後的值...)

注意一般C/C++語句的執行順序都是從右至左...


需要注意兩點。','是執行語句的間隔。第一行賦值符號=的右值表示由又三個執行語句組成。對象i的原值是隨語句執行而不斷改變的。

而第二行中,賦值符號=的右值只有一個執行語句。對象i的底值一直爲i = 3不變,又自增三次,最終i = 6。


另,C/C++語言中語句的執行順序 一般未從右至左。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章