鱼C论坛

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

关于鱼C:C视频里的一道题,我钻进死胡同了

[复制链接]
发表于 2013-5-1 02:20:58 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
void main()
{
        int i=5,z;
        z=(++i)+(++i);
        printf("%d\n",z);
}
为什么最后z=14而不是13,第一个(++i)=6,第二个(++i)应该等于7吧?怎么加起来就是14呢?多出来的1是哪里来的?
我刚开始学这个,钻进死胡同了,希望有朋友能帮忙解答一下,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-1 02:50:32 | 显示全部楼层
我只是路过打酱油的。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-1 06:03:45 | 显示全部楼层
7+7本来就等于14;
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-1 08:44:20 | 显示全部楼层
好像有的编译器会先++,就是7+7,有的是6+7
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-1 09:48:34 | 显示全部楼层
不同的编译器有可能有不同的答案
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-2 12:48:42 | 显示全部楼层
括号的优先级大于+号,所以先算括号中的  z=(++i)+(++i);  i 初值为5,先算第一个括号i=6,然后再算第二个括号i=7,最后才算加法,7+7=14
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-2 16:53:03 | 显示全部楼层
i=5;运算是会把++算完才开始进行加法
即第一次++i后,i=6;
第二次++i后,i=7;
在进行相加
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-2 17:07:09 | 显示全部楼层
题目错误 结果没意义
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-4 23:20:23 | 显示全部楼层
真是难得给力的帖子啊。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-5 01:31:13 | 显示全部楼层
楼主加油,鱼C加油!我们都看好你哦!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-5 17:06:50 | 显示全部楼层
不同编译器代码优化结果的不同而已,楼主没必要过分钻牛角尖。

其实反而应该避免这种情况的发生,以免产生歧义和影响程序的可移植性啦。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-6 08:07:33 | 显示全部楼层
楼上正解^.^
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-30 08:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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