Re: [問題] i++,++i

看板Programming作者時間15年前 (2008/11/26 16:01), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/4 (看更多)
※ 引述《sjrom.bbs@ptt.cc (淡淡的藍)》之銘言: > 程式如下 > main() > { > int i=5,j=5,p,q; > p=(i++)+(i++)+(i++)+(++i)+(++i); > q=(++j)+(++j)+(++j)); > printf("%d\n,%d\n,%d\n,%d\n",p,q,i,j); //28,22,10,8 > } > 註解是印出來的值,如果是 > p=(i++)+(i++)+(i++); //p的值是 15 > ↑這個可以理解,可用這個想法來想++i,卻解不出上面的答案 > 這和compile有關嗎? 我用vc6跑的. 好像每年都會看到這種問題文章,而且每次回應時候都會把 這類問題鞭策過才可以。 這類寫法老實說 c 裡面應該沒有明確規範解釋的順序方式, 所以就留給各家 compiler 自行決定。 我想學 c 的人把 i++ 與 ++i 的差異弄清楚就可以了,實在 沒有必要寫這種奇怪的程式碼。 另外還看過這種: int num; printf("%d\n", num + (num = 100)); 看完我感覺我很想打這個寫 code 的人。 以外印象中這類 code 老實說也感覺不是很明確: (*ptr++) ? (*ptr++) : 0 myfunc1(i++) + myfunc2(i++) 多年的討論,我想最後都會有如下的結果回應: 1. 若是是學校 homework,表示授課教師可能....(自行猜想) 2. 若是在工作地方寫這程式會被主管鞭策一頓 若你真的對你用的 compiler 解釋方式有興趣,建議把程式碼轉成 assembly language 後,看 asm code 會知道比較細部流程。 -- 如果真的愛一個作業系統 怎能不害怕不再能使用它 而我們必須接受現實 於是長大了 寂寞就是沒有了機會再用它 比沒有電腦還要寂寞 而那些點亮我們生命的作業系統 就彷彿電影中發生在暹邏的愛情故事 即使短暫使用也會刻骨銘心 To all the Linux that bring us to kernel. -- ※ Origin: SayYA 資訊站 <bbs.sayya.org> ◆ From: kendlee.sayya.org

11/26 19:44, , 1F
*ptr++ = (*ptr)++ or *(ptr++) 應該是後
11/26 19:44, 1F
文章代碼(AID): #19BG8_00 (Programming)
討論串 (同標題文章)
文章代碼(AID): #19BG8_00 (Programming)