程式語言 - 考試

Table of Contents

: ----------------------------------------------------------------------------
: (*n) = 12;
: 上述的是這樣嗎??*n=(*n)+++--*n-*n = {(*n)++}+{--*n}-{*n}=13+11-12=12
: printf(x)=??

不知道為什麼換了兩個環境跑答案都不是11... (我是剛加入新手...)

不過剛剛查了一下資料,計算出來應該是11的說

http://openstudy.com/updates/4df1b1b90b8b370c28bb8525

*n = (*n)++ + --*n -*n;

程式是由右至左丟進stack

所以第一個裝的是12 再裝減號裡面有減號跟12

然後丟--*n進去 減減後值是11 stack裡面就有11-12 所以是-1裝進去

先丟加號,再丟(*n)++進去 算式變成 11+(-1) 全部計算完後要++

所以答案是11



請問這樣對嗎??



因為跑程式結果都不是11,所以想問一下,謝謝!!


--

All Comments

Hazel avatarHazel2014-01-03
void 沒有回傳值
Barb Cronin avatarBarb Cronin2014-01-07
*n=(*n)+++--*n-*n=>12+(12-1)-12=12+11-12=23-12=11
Susan avatarSusan2014-01-11
重點 最後還要+上1 因為(*n)++是先執行n=12 後+1
所以執行完還要再+1
Tom avatarTom2014-01-14
最後答案為11+1=12