鱼C论坛

 找回密码
 立即注册
查看: 4387|回复: 8

新手求助教加加减减问题

[复制链接]
发表于 2011-12-10 23:29:34 | 显示全部楼层 |阅读模式

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

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

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

为什么输出的是22,不是应该是21吗?

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-12-13 22:59:29 | 显示全部楼层
没人回答,我自己来回答吧,VC++6.0编译器,在运行P=++i + ++i + ++i 前两次相加是6+6然后再加8
如果要在后面再加上一个或两个++i时就是6+6+7+8+9,无论加多少个前面两个都是第二个++i相加,后面的依次增加

还有printf输出加加,减减时,它是从右往左匹配参数的,见到加加,减减在后面就不运算,把i的值直接输出,凡是有加加,减减在前面的就依次运算后再输出

如果是分开输出时,就依次运算再输出。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-12-14 00:41:31 | 显示全部楼层
自右向左排序的
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-6-12 21:35:21 | 显示全部楼层
没人回答,我自己来回答吧,VC++6.0编译器,在运行P=++i + ++i + ++i 前两次相加是7+7然后再加8
如果要在后面再加上一个或两个++i时就是7+7+8+9+10,无论加多少个前面两个都是第二个++i相加,后面的依次增加

还有printf输出加加,减减时,它是从右往左匹配参数的,见到加加,减减在后面就不运算,把i的值直接输出,凡是有加加,减减在前面的就依次运算后再输出

如果是分开输出时,就依次运算再输出。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-12 22:05:23 | 显示全部楼层
不对 应该是24
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-13 00:51:51 | 显示全部楼层
飘过。。。。。。。。。。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-13 01:18:03 | 显示全部楼层
严重关注一下  路过
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-14 17:03:19 From FishC Mobile | 显示全部楼层
根据不同的编译器结果不同的!编程最好不要用这样的语句
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-14 17:11:09 | 显示全部楼层

答错
这题你需要了解的 应该是
C语言未定义行为 副作用序列点

而不是在某个编译器上的不可靠的实现
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-9 23:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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