printf("%d %d\n", i++, i++);正确的显示应该是什么?

youyilu3 2012-10-30 11:16:50

int i = 1;
printf("%d %d\n", i++, i++);


vs编译器默认的是/RTCsu,显示是2 1

设置为Default时,显示是1 1

有人知道为什么吗?
...全文
692 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
debugeeker 2012-10-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 3 楼 的回复:
标准月经贴,在一个表达式中。两次都同一个变量操作是未定义行为。。。

不同编译器可以做不同的实现,不仅是vs的编译器给你不同的结果,其他给出不同结果都是可以的》。。


标准中有这方面的说明是吗?

本人学c的时候用的是谭浩强的书,好像没提到过
[/Quote]
你到老谭家索赔吧,出这种书误人子弟。学C、C++多看一下英文的教材和编程规范。
这种就像抠“回”字有四种写法的行为,就没必要了,很浪费时间的。
youyilu3 2012-10-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
标准月经贴,在一个表达式中。两次都同一个变量操作是未定义行为。。。

不同编译器可以做不同的实现,不仅是vs的编译器给你不同的结果,其他给出不同结果都是可以的》。。
[/Quote]

标准中有这方面的说明是吗?

本人学c的时候用的是谭浩强的书,好像没提到过
lin5161678 2012-10-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
引用 3 楼 的回复:
标准月经贴,在一个表达式中。两次都同一个变量操作是未定义行为。。。

不同编译器可以做不同的实现,不仅是vs的编译器给你不同的结果,其他给出不同结果都是可以的》。。


那printf("%d %d\n", ++i, ++i);也是未定义的吗?
[/Quote]
是的 都是未定义
youyilu3 2012-10-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
标准月经贴,在一个表达式中。两次都同一个变量操作是未定义行为。。。

不同编译器可以做不同的实现,不仅是vs的编译器给你不同的结果,其他给出不同结果都是可以的》。。
[/Quote]

那printf("%d %d\n", ++i, ++i);也是未定义的吗?
Qyee16 2012-10-30
  • 打赏
  • 举报
回复
标准月经贴,在一个表达式中。两次都同一个变量操作是未定义行为。。。

不同编译器可以做不同的实现,不仅是vs的编译器给你不同的结果,其他给出不同结果都是可以的》。。
  • 打赏
  • 举报
回复
代码就是错的
JiMoKuangXiangQu 2012-10-30
  • 打赏
  • 举报
回复
这已经第无数次发这样的帖了.
不用纠结,取决于实现细节.
永远也不要写这样的代码.

70,024

社区成员

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

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