今天百度知道里面看到了一個問題,很有意思,整理了下思路,回答如下。。。
一:
問題:假設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++語言中語句的執行順序 一般未從右至左。