免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: FeCen
打印 上一主题 下一主题

[C] 新手问一个关于i++和++i的问题  关闭 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-05-05 15:15 |只看该作者
原帖由 FeCen 于 2009-5-5 15:11 发表
我的疑问是:
为什么i++ * i++不是3 * 4而是3 * 3呢?

另外,
i = 3;
j = i++ * i++; + i++;
k = ++i * ++i + ++i;
这两句的执行有点诡异。
首先看下面那句,它的结果是k=73,根据这个结果反推应该是8 ...

诡异也没办法,规则是别人定的,翻译成汇编代码是编译器干的,你不能插手,只能把东西交给他

论坛徽章:
0
12 [报告]
发表于 2009-05-05 15:27 |只看该作者
原帖由 daybreakcx 于 2009-5-5 15:15 发表

诡异也没办法,规则是别人定的,翻译成汇编代码是编译器干的,你不能插手,只能把东西交给他


别人定的规则也是规则啊,呵。

而且好像也跟运算符优先级没有关系,因为不管是先++还是后++,它们的优先级都高于*和+。
不知道有没有人能够解释清楚,虽然除了在有些变态的面试题中,意义不大。

论坛徽章:
0
13 [报告]
发表于 2009-05-05 16:13 |只看该作者
是的,这就叫 implementation-defined behavior。
看见这种面试题,完全可以直接彪悍地写上一句:依赖于实现。
真用这种面试题的公司,不去也罢。

J:\>cl testincr.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

testincr.c
Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/out:testincr.exe
testincr.obj

J:\>testincr
9
12

J:\>


这是 GCC 3 (i386)

$ gcc -o testincr testincr.c
$ ./testincr
9
12


再给你看一下 MSC 6.0 的输出:

testincr.png (8.14 KB, 下载次数: 10)

testincr.png

论坛徽章:
0
14 [报告]
发表于 2009-05-05 16:20 |只看该作者

回复 #13 langue 的帖子

把程序员当作编译器来用的

论坛徽章:
0
15 [报告]
发表于 2009-05-05 16:30 |只看该作者
这也是NC喜欢拿出来出的NC题,我愿意把GCC改成什么样子就什么样子。

论坛徽章:
0
16 [报告]
发表于 2009-05-05 16:47 |只看该作者
原帖由 langue 于 2009-5-5 16:13 发表
是的,这就叫 implementation-defined behavior。
看见这种面试题,完全可以直接彪悍地写上一句:依赖于实现。
真用这种面试题的公司,不去也罢。

J:\>cl testincr.c
Microsoft (R) 32-bit C/C++ Optimiz ...


呵呵,既然如此,那此帖讨论就到此为止吧。
我也就是求一个放心,担心自己的理解有疏漏,既然是implementation-defined behavior,那就没有什么可深究的了。

多谢各位!
vitacy 该用户已被删除
17 [报告]
发表于 2009-05-05 18:09 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
18 [报告]
发表于 2009-05-05 19:57 |只看该作者
先把C/C++的宏定义搞清楚,建议先看看c premir,其中对于宏定义的解释很详细,对于你这个问题很有帮助!

论坛徽章:
0
19 [报告]
发表于 2009-05-05 20:12 |只看该作者
我觉得这没标准答案吧,标准里对这类应该是未定义的

论坛徽章:
0
20 [报告]
发表于 2009-05-05 20:23 |只看该作者
俺回去温习下ANSI/ISO,再来
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP