为什么同样的代码在Apple LLVM Compiler和Microsoft VC上的结果不同?

狂奔中的毛豆 2012-10-12 01:01:38

#include<iostream>
using namespace std;
int main()
{
int i(5);
cout<<i++<<'\t'<<i++<<'\t'<<i++<<endl;

i = 5;
printf("%d %d %d", i++, i++, i++);

return 0;
}


上面的代码,在Apple LLVM Compiler上的结果是 5 6 7,但是在VC上的结果是7 6 5, 同时,我又尝试在XCode上用LLVM GCC 4.2来编译上述代码,结果和VC的相同,结果是同样是 7 6 5
我从C++ Primer上查到的结果是,<< 操作符是左结合,所以应该是 5 6 7.

那么问题就来了,到底这是谁的错!?
...全文
247 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin5161678 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

其实也不是这个代码有什么错误,无论是语法还是语义上,都是没有错误的。问题就在于语言本身的特性决定了相同的代码在不同系统上的表现为什么会出现不同的结果。C/C++这类接近系统级别的语言来说,语义定义上其实是存在缺陷的,导致程序员在解决实际问题的同时,还需要考虑系统上的问题。
[/Quote]
未定义行为 严格来说就是错误的
渣代码无误
狂奔中的毛豆 2012-10-15
  • 打赏
  • 举报
回复
其实也不是这个代码有什么错误,无论是语法还是语义上,都是没有错误的。问题就在于语言本身的特性决定了相同的代码在不同系统上的表现为什么会出现不同的结果。C/C++这类接近系统级别的语言来说,语义定义上其实是存在缺陷的,导致程序员在解决实际问题的同时,还需要考虑系统上的问题。
mujiok2003 2012-10-12
  • 打赏
  • 举报
回复
未定义的行为
mujiok2003 2012-10-12
  • 打赏
  • 举报
回复
未定义的行为
mujiok2003 2012-10-12
  • 打赏
  • 举报
回复
未定义的行为
armsword 2012-10-12
  • 打赏
  • 举报
回复
i++

请看置顶http://topic.csdn.net/u/20110826/09/601ebe9c-c2ae-4d63-a4e2-506c618bb654.html?61582
狂奔中的毛豆 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

代码是错的。
[/Quote]

代码是错的? 怎么说?
sniffer12345 2012-10-12
  • 打赏
  • 举报
回复
日经。。
  • 打赏
  • 举报
回复
代码是错的。
代码下载地址: https://pan.quark.cn/s/a4b39357ea24 ### HSMS/SEMI通讯E37说明书中文关键知识点 #### 一、HSMS概述 - **HSMS**(High-Speed SECS Message Service)是一种专为半导体工厂内部计算机之间进行高速消息传输而构建的通信标准。该标准旨在逐步取代原有的SEMIE4(SECS-I)和SEMIE13(SECS Message Service),特别是在需要高速数据交换或简单的点对点拓扑结构无法满足实际需求的情况下。 - HSMS的核心宗旨在于提供一种机制,使来自不同制造商的设备能够达成无缝对接和互操作状态,即便这些设备在设计理念和通信机制上存在显著差异。 - HSMS不仅适用于TCP/IP优先于OSI模型的应用环境,同时也能作为SEMIE4和SEMIE13的有效替代方案。 #### 二、HSMS的应用范围 - HSMS主要部署于半导体制造业中的计算机系统之间进行消息交换的场景,如自动化生产线、设备监控系统等。 - 该标准界定了通信接口,使得半导体工厂内的各类设备能够实现高效且可靠的数据传输。 #### 三、HSMS与其他标准的关系 - **SEMIE4 (SECS-I)**:规定了消息传输的基本规则和格式。 - **SEMIE5 (SECS-II)**:明确了消息的具体内容和结构。 - **IETF Documents**: - RFC791 - Internet协议 - RFC792 - Internet控制消息协议 - RFC793 - 传输控制协议 - RFC1120 - Internet主机通信层的要求 - RFC1340 - 指定号码 - **POSIX D...

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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