看板 C_and_CPP 關於我們 聯絡資訊
※ [本文轉錄自 Soft_Job 看板] 作者: ibmibmibm (殺.人.鬼) 看板: Soft_Job 標題: Re: [心得] 程式設計師應該懂多少? 時間: Sun Jun 7 04:36:23 2009 今天在編 2.4 kernel 的時候, 學到了一個我之前都不知道的東西, 寫出來考考大家。 #include <stdio.h> int main() { int x = 5; ((void)0, x)++; printf("%d\n", x); return 0; } 請問這段程式碼有什麼問題?為什麼? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.237.164 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.237.164
Fenikso:comma operator的運算結果是r-value 06/07 05:06
ibmibmibm:答對了XD 06/07 05:09
ibmibmibm:而且C++的comma運算結果是l-value 06/07 05:10
zlw:查了一下,C++ Primer有寫,comma原本會傳回最右邊的且是左值 06/07 08:18
zlw:即原本是要傳回x而非5,應該是多了()後,就會取出5來變成做5++ 06/07 08:19
zlw:以前大學用的中文書完全不會提這個,今天才知道comma是這樣子 06/07 08:21
zlw:用VC把上面的編成C++還是會做x++,最後印出6,搞錯 06/07 08:25
realmojo:推一個 06/07 08:38
in09:學了新的東西 推~~ 06/07 08:57
realmojo:不過就1f說的,x應該不能說他是r-value吧?只能說最右邊 06/07 09:32
weiyucsie:推一個XD 06/07 12:42
ggg12345:((void)911,x)++ 不是更夠味嗎? 故弄玄虛, 開完笑啦! 06/07 15:52
zlw:看不懂這個玩笑耶...把0改成911什麼意思? 06/07 17:11
ggg12345:都是constant也沒被參考到,compiler也就不理(void)911 06/08 01:00
zlw:謝謝 06/08 03:14