这就是vc和tc的差别?

wadefelix 2003-10-02 09:54:40
main()
{int i=3;
printf("%d\n",(++i)+(++i)+(++i));
}
上面这一段程序在vc里编译运行结果是16,在tc里结果是18甚至有时是15,请问究竟是哪一个正确,为什么?
...全文
83 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonybaobao 2003-10-03
  • 打赏
  • 举报
回复
晕,怎么这么多人要研究这种问题?有价值嘛?
chenkuizhong 2003-10-03
  • 打赏
  • 举报
回复
现在学校的C语言题都比较喜欢考这个(二级)
yang8099601 2003-10-03
  • 打赏
  • 举报
回复
我靠

太复杂了
道自我看不懂
Wolf0403 2003-10-03
  • 打赏
  • 举报
回复
看这种代码,我会反胃。。。
hongfeeling 2003-10-03
  • 打赏
  • 举报
回复
这种代码,少写为妙。
主要是编译器的参数压栈顺序不同引起的。
Milo-会鸽 2003-10-03
  • 打赏
  • 举报
回复
这不存在哪个正确的问题,而是因为编译嚣的不同
C723 2003-10-03
  • 打赏
  • 举报
回复
无聊 写清楚不就不会出这情况了吗?
GhostAdz 2003-10-03
  • 打赏
  • 举报
回复
编译器不同
bing_huo 2003-10-03
  • 打赏
  • 举报
回复
无聊
junmayang 2003-10-03
  • 打赏
  • 举报
回复
编译器相关
KingI 2003-10-03
  • 打赏
  • 举报
回复
编译器不同结果会不同
henghengpig 2003-10-03
  • 打赏
  • 举报
回复
本人愚见:
vc:
cout<<((++i) + (++i) + (++i));
↑ ↑ ↑ ↑ ↑
① ② ① ④ ③
tc:
cout<<((++i) + (++i) + (++i));
↑ ↑ ↑ ↑ ↑
① ② ① ② ①

可见,这不过是编译规则不同而已.不能说TC有错误,因为有TC的时候,编译规则还并不统一,只不过后来有了有了更广泛性的更大众性的共同认识(主要是使用者),才有了所谓的标准,而到这个时候的borland公司已经不在TC上下工夫.如果现在使用C++Builder,会发现,这种所谓的'错误"已经不再存在.
siegf 2003-10-03
  • 打赏
  • 举报
回复
天哪!在学校的时候,被这种乱七八糟的代码弄得头昏脑涨!
是不是学校认为代码越是这种乱得无法让人理解,越是好程序员啊!
TongNi 2003-10-02
  • 打赏
  • 举报
回复
这是编译器的问题了.
Jinhao 2003-10-02
  • 打赏
  • 举报
回复
怎么又是这个东西
(++i)+(++i)+(++i));
fireseed 2003-10-02
  • 打赏
  • 举报
回复
18是这样得来的,三个括号里的表达示先执行,然后相加
cenphoenix 2003-10-02
  • 打赏
  • 举报
回复
这是编译器的问题了.

69,373

社区成员

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

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