鱼C论坛

 找回密码
 立即注册
查看: 2673|回复: 11

关于c的++问题!!!!

[复制链接]
发表于 2012-6-23 21:33:31 | 显示全部楼层 |阅读模式
10鱼币
#include <stdio.h>
int main(void)
{
  int j = 5,k;
   k=(++j)+(++j)+(++j);
  printf("k=%d\n",k);
}
结果为22,好几个编译器都是22,所以不要把责任推给编译器哦
另附上汇编代码:      k=(++j)+(++j)+(++j);
0040102F   mov         eax,dword ptr [ebp-4]
00401032   add         eax,1
00401035   mov         dword ptr [ebp-4],eax
00401038   mov         ecx,dword ptr [ebp-4]
0040103B   add         ecx,1
0040103E   mov         dword ptr [ebp-4],ecx
00401041   mov         edx,dword ptr [ebp-4]
00401044   add         edx,dword ptr [ebp-4]
00401047   mov         eax,dword ptr [ebp-4]
0040104A   add         eax,1
0040104D   mov         dword ptr [ebp-4],eax
00401050   add         edx,dword ptr [ebp-4]
00401053   mov         dword ptr [ebp-8],edx
我不明白为什么是7+7+8呢?我觉的是8+8+8…
为什么算到 j=7时,折回去7+7呢,按优先级不应该是继续自加吗?
求解释,谢谢啦

最佳答案

查看完整内容

你去看下 C语言自增自减学习资料.txt http://115.com/file/c263gvhu# 你看完你就明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-23 21:33:32 | 显示全部楼层
你去看下   
C语言自增自减学习资料.txt  
http://115.com/file/c263gvhu#
你看完你就明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-23 21:50:06 | 显示全部楼层
你知道是7+7+8我就不解释了啊,至于为什么是这样,那是编译器规定的,你以后还会遇到类似的奇怪的问题,比如struct的内存分配,这都是编译器规定的,这样规定大多都是为了提高效率和节省空间。了解就可以了,要想深入研究就学习编译原理。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-23 22:23:22 | 显示全部楼层

编译器规定?!不理解,编译器咋规定的…………再说考试一旦考的话让我咋做?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-23 22:39:00 | 显示全部楼层
格式天下 发表于 2012-6-23 22:23
编译器规定?!不理解,编译器咋规定的…………再说考试一旦考的话让我咋做?

呵呵,c语言考试一般不考这个的,因为它的答案不确定,你用tc编译结果是24,在编译原理里面考这样的题比较多,就算真的考了,基本就考这个例子啦。这个题目就是告诉你为了可移植性,以后编程不要这样写,可以当个反例看。

评分

参与人数 1鱼币 +5 收起 理由
格式天下 + 5 虽然我还是不能接受……

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-24 07:59:44 | 显示全部楼层
好到位啊,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-24 11:43:42 | 显示全部楼层
说到考试的话,这个题目可以考,根据C语言标准,该题有几种不同的答案.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-24 14:20:52 | 显示全部楼层
仰望天上的光 发表于 2012-6-24 11:43
说到考试的话,这个题目可以考,根据C语言标准,该题有几种不同的答案.

嗯……可我怎么想也不会想到是22的……这是最蛋疼的一点……其实这是一个初学者问我的,我想不出来才……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-28 08:33:55 | 显示全部楼层
别试图用汇编解析 缘木求鱼了 编译器可以有不同解释 杜绝这样的想法和做法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-28 08:38:02 | 显示全部楼层
格式天下 发表于 2012-6-24 14:20
嗯……可我怎么想也不会想到是22的……这是最蛋疼的一点……其实这是一个初学者问我的,我想不出来才…… ...

o(∩_∩)o 哈哈.............纠结了哈多天把。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-28 12:47:31 | 显示全部楼层
♂季_末♀ 发表于 2012-6-28 08:38
o(∩_∩)o 哈哈.............纠结了哈多天把。

呀!VIP呀……吊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-6-28 12:51:12 | 显示全部楼层
我是师兄 发表于 2012-6-28 08:33
别试图用汇编解析 缘木求鱼了 编译器可以有不同解释 杜绝这样的想法和做法

哦,谢谢^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 23:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表