关于C语言中运算符的问题
代码如下
#include <stdio.h>
int main()
{
int a = 5;
int b, c;
c = (a = 3) + (b = a + 2) - (a = 2);
printf("%d %d %d", a, b, c);
return 0;
}
结果是 2 5 5
()运算符不是自左向右运算吗?为什么是这种结果?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
表达式求值的顺序是未定义行为(undefined behavior),研究这个没有意义。最终程序产生任何结果都是正常的,具体行为由编译器和平台决定
真的不是2,5,6吗???
赋值语句求值就是被赋值变量的求值。第一个括号求值为3(a变成3),第二个求值为5(b变成5),第三个求值为2(a又变成2)。c变成6
结果不是2,5,6吗
不同的编译器结果可能不一样,vc6结果就是 2 5 6