顺序不同为什么输出结果不同呢?

qingyazhi 2010-09-15 01:53:48
两个程序:
#include<stdio.h>
void main()
{
int a,b,c;
a=b=1;
printf("%d %d %d\n",a,(a++,b++,++b),b);
}
输出结果为2 3 1
#include<stdio.h>
void main()
{
int a,b,c;
a=b=1;
printf("%d %d %d\n",(a++,b++,++b),a,b);
}
输出结果为3 1 1
这是为什么呢?请指点,谢谢
...全文
185 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
canshui 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 zhao4zhong1 的回复:]
引用 10 楼 canshui 的回复:
有人管这种叫“月经”贴

不知何意?

周期性地来,而且比较恶心、比较恐怖、比较烦人、比较无奈……
[/Quote]

dzc8866 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lbh2001 的回复:]
不要考虑这样的东西了
C标准中没有定义这样的结果
完全由编译器实现决定的
[/Quote]

这种东西实际工作中是不会写的,但是对找工作的人来说,了解一下吧,毕竟很多公司会出这样的面试题
nwao7890 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 zhao4zhong1 的回复:]

引用 10 楼 canshui 的回复:
有人管这种叫“月经”贴

不知何意?

周期性地来,而且比较恶心、比较恐怖、比较烦人、比较无奈……
[/Quote] 只有引用的内容不允许回复!
赵4老师 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 canshui 的回复:]
有人管这种叫“月经”贴

不知何意?
[/Quote]
周期性地来,而且比较恶心、比较恐怖、比较烦人、比较无奈……
wlgc123321 2010-09-15
  • 打赏
  • 举报
回复
这个其实没必要研究的
赵4老师 2010-09-15
  • 打赏
  • 举报
回复
不要写连自己也预测不了结果的代码!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。

VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
canshui 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 woailp___2005 的回复:]
引用 10 楼 canshui 的回复:
有人管这种叫“月经”贴

不知何意?

每隔一段时间就有人贴出来问-_-
这个没啥好追究的,看编译器
别写自己也无法预测,带有歧义的代码就是了
[/Quote]

呵呵……
原来如此……
Q446512799 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 canshui 的回复:]
有人管这种叫“月经”贴

不知何意?
[/Quote]
每隔一段时间就有人贴出来问-_-
这个没啥好追究的,看编译器
别写自己也无法预测,带有歧义的代码就是了
canshui 2010-09-15
  • 打赏
  • 举报
回复
有人管这种叫“月经”贴

不知何意?
bobo364 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 myjiaqin 的回复:]
为什么我运行的结果和你的不一样呢!我的第一个是2,2,3,第二个是3,2,3,我决对没改只是复制粘贴过去的啊…………
[/Quote]

这个问题要看编译器具体生成的汇编代码
Q446512799 2010-09-15
  • 打赏
  • 举报
回复
编译器不同-_-
myjiaqin 2010-09-15
  • 打赏
  • 举报
回复
为什么我运行的结果和你的不一样呢!我的第一个是2,2,3,第二个是3,2,3,我决对没改只是复制粘贴过去的啊…………
kartik 2010-09-15
  • 打赏
  • 举报
回复
编译器是从右往左进行编译的。哈,记住了哦
wyfwx 2010-09-15
  • 打赏
  • 举报
回复
感觉就跟研究"回"字的多种写法一样
lbh2001 2010-09-15
  • 打赏
  • 举报
回复
不要考虑这样的东西了
C标准中没有定义这样的结果
完全由编译器实现决定的
Joe_Yang 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dinjay 的回复:]
很明显,编译器是从右往左进行编译的。
[/Quote]
正解
shi3590 2010-09-15
  • 打赏
  • 举报
回复
记下来好了,好多面试题愿意出这个。
dinjay 2010-09-15
  • 打赏
  • 举报
回复
很明显,编译器是从右往左进行编译的。

69,381

社区成员

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

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