鱼C论坛

 找回密码
 立即注册
查看: 2993|回复: 4

解释

[复制链接]
发表于 2011-3-20 21:42:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
void main ()
{
   int i=5,j=5,p,q;
   p=(i++)+(i++)+(i++);
   q=(++j)+(++j)+(++j);
   printf("%d,%d,%d,%d",p,q,i,j);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-20 23:54:54 | 显示全部楼层
本帖最后由 仓小姐 于 2011-3-21 00:21 编辑

1.总体上讲:i++是先执行再执行再自加一
                ++i是先自加一再执行

2.不同的编译器结果不一样;
在VC上p=15,q=22,
在TC上p=15,q=24

3.按我上面的解释,TC上的这个结果很好理解,编译器先(++j)3次,j=8,然后加起来就是24
VC上面默认的都是2目运算,也就是说编译器看到x=a+b+c,会先做x=a+b,然后x=x+c
q=(++j)+(++j)+(++j);先看到前面2个(++j)这时候j=7加起来是14,然后执行q=14+(++j)=14+8=22

然后你会问在p怎么一样呢,i++是先执行再自加,所以...

其他的编译器可能会有更多的结果,你可以自己试一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-21 08:50:54 | 显示全部楼层
:lol这个不错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-3-21 12:16:13 | 显示全部楼层
谢谢
[url][/url]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-5-14 23:45:12 | 显示全部楼层
回复 xiang__jie 的帖子

#include <stdio.h>
void main ()
{
   int i=5,j=5,p,q;
   p=(i++)+(i++)+(i++);
   q=(++j)+(++j)+(++j);
   printf("%d,%d,%d,%d",p,q,i,j);
}

仓小姐,这个题的答案为15。22。8。8;我想请问一下这个题的对于此答案的解释,我记得您以前的回复中说VC是上面默认的都是二目运算,您能不能再解解释清楚一点啊!尤其是“p=(i++)+(i++)+(i++);”,这一行指令!个人认为P应该等于18或者16,请理清在下的思路!!谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-3-29 00:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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