代码如下
#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
()运算符不是自左向右运算吗?为什么是这种结果?
代码如下
#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
()运算符不是自左向右运算吗?为什么是这种结果?
真的不是2,5,6吗???
赋值语句求值就是被赋值变量的求值。第一个括号求值为3(a变成3),第二个求值为5(b变成5),第三个求值为2(a又变成2)。c变成6
结果不是2,5,6吗
1 回答3.3k 阅读
1 回答1.1k 阅读✓ 已解决
1.1k 阅读
表达式求值的顺序是未定义行为(undefined behavior),研究这个没有意义。最终程序产生任何结果都是正常的,具体行为由编译器和平台决定