作者ibmibmibm (杀.人.鬼)
看板C_and_CPP
标题[心得] 你所不知道的C语言 - 小测验
时间Sun Jun 7 04:38:58 2009
※ [本文转录自 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
1F:推 Fenikso:comma operator的运算结果是r-value 06/07 05:06
2F:→ ibmibmibm:答对了XD 06/07 05:09
3F:→ ibmibmibm:而且C++的comma运算结果是l-value 06/07 05:10
4F:推 zlw:查了一下,C++ Primer有写,comma原本会传回最右边的且是左值 06/07 08:18
5F:→ zlw:即原本是要传回x而非5,应该是多了()後,就会取出5来变成做5++ 06/07 08:19
6F:→ zlw:以前大学用的中文书完全不会提这个,今天才知道comma是这样子 06/07 08:21
7F:→ zlw:用VC把上面的编成C++还是会做x++,最後印出6,搞错 06/07 08:25
8F:推 realmojo:推一个 06/07 08:38
9F:推 in09:学了新的东西 推~~ 06/07 08:57
10F:推 realmojo:不过就1f说的,x应该不能说他是r-value吧?只能说最右边 06/07 09:32
11F:推 weiyucsie:推一个XD 06/07 12:42
12F:推 ggg12345:((void)911,x)++ 不是更够味吗? 故弄玄虚, 开完笑啦! 06/07 15:52
13F:推 zlw:看不懂这个玩笑耶...把0改成911什麽意思? 06/07 17:11
14F:→ ggg12345:都是constant也没被参考到,compiler也就不理(void)911 06/08 01:00
15F:推 zlw:谢谢 06/08 03:14