題目:7.若有定義int i=1,j=2;在Turbo中,則表達式(++i)+(i++)+(++j)+(--j)的值為(8).問答案為什么是8?我用的是turbocint i=1,j=2;int k;k=(++i)+(i++)+(++j)+(--j);問k的值是多少?答案為8答案絕對不是9如果不信你可以在turboc 2.0中試一下。我想問的關(guān)鍵是在遇到(++i)+(i++)時雙操作是如何運行的(結(jié)合方向)。 《〈實際上對雙操做數(shù)來說的是在一個語句中結(jié)束前加和后加的問題 。即如k=(++a)+(a++);a++是語句結(jié)束后在后加,++a是先加后計算再語句結(jié)束。〉》 謝謝各位了 。[size=2][/size]
熱心網(wǎng)友
這個問題其實就是考你對++a 及 a++兩種寫法的不同(a=1)1。對于++a 此語句的結(jié)果是2,但是a本身的沒有變?nèi)匀皇?2。對于a++ 此語句的結(jié)果是2,而且a自身的值也變?yōu)?
熱心網(wǎng)友
其實這個問題很簡單,你的右值里面的變量的值在變動,這就造成了加法交換律和括號的失效,舉個例子:int a=3,b=5,c;c=a*b + ++b;cout < ++i使用的是前綴表示法,是先使變量的值加一或減一,然后才進行賦值;i++使用的是后綴表示法,是先把變量的值賦過去,然后才使變量自身加一或減一.所以說(++i)=2,(i++)=1,(++j)=3,(--j)=1結(jié)果是7 (++i)+(i++)+(++j)+(--j)是這?擁乃家?++i是加了1後再算;而i++是算了再加.j 也是這?擁?因?閕=1 j=2 所以(++i)是2 (i++)是1 (++j)是3 (--j)是1答案一定是7 在Linux GCC 4.0下面答案是9!在TC下面答案是8這可能是編譯器的原因不同的編譯器產(chǎn)生的結(jié)果是不一樣的關(guān)鍵是出這樣的題是不合理的!熱心網(wǎng)友
熱心網(wǎng)友
熱心網(wǎng)友