( ++i )+( ++i )+( ++i )问题!谢谢

Mohoman 2004-08-10 03:45:23
#include<stdio.h>

main()

{

int i=3,h;

h=( ++i )+( ++i )+( ++i );

printf("h=%d\n",h);

}

这一程序在turboc2下运行等于18,而在Dev-C++和VC上运行是等于16。请问这是为什么?谢!
...全文
93 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kenan2002 2004-08-10
  • 打赏
  • 举报
回复
编程的时候不需要写这种看不懂的语句吧。
Leaveye 2004-08-10
  • 打赏
  • 举报
回复
表达式解析的方法问题,这是编译器相关的,解决的方法就是避免在一个表达式里写多个这样的级别歧义的指令,把它们拆分开。
=18:
先算了三个++i,最后相加。
=16(未测试过,猜测如下):
h=( ++i )+( ++i )+( ++i ); i=3
~~~~~ i=4
i + ~~~~~ i=5
5 + 5 = 10 i=5 这里是+,先算前面
10 + ~~~~~ i=6
于是就等于16了。
peter9606 2004-08-10
  • 打赏
  • 举报
回复
为了进一步帮助楼主:

偶在vc6+win2k下运行结果 18

dev+win2k 16
peter9606 2004-08-10
  • 打赏
  • 举报
回复
首先建议楼主不要去追究这个问题了

其次回答你的问题 就是因为各个编译器的运算顺序有所不同

(这个顺序标准c中是没有规定的,所以各个编译器可能会产生不同的结果)
Mohoman 2004-08-10
  • 打赏
  • 举报
回复
说说每一步的过程好么?
应该是4+5+6阿?
=15
怎么还能等于16和18
kenan2002 2004-08-10
  • 打赏
  • 举报
回复
求值方法不同吧

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧