我知道多个表达式的求值顺序是从右到左的。 例如:
int i = 0;
printf("%d %d %d", i, i++, i++); // Prints 2 1 0
但是,当涉及到每个表达式的计算时,我不确定它是从右到左还是从左到右。
int main()
{
int a = 1, b = 1, d = 1;
printf("%d", a + ++a); // Result = 4
}
考虑从左到右进行评估,前置代码应该被评估为1 + 2 = 3。
int main()
{
int a = 1, b = 1, d = 1;
printf("%d", ++a + a); // Result = 4
}
这应该被解释为 2 + 2 = 4。
但是在两种情况下答案都是4。
请问有人能解释一下这些表达式是如何计算的吗?
int i = 0; printf("%d %d %d", i, i++, i++); // 输出 2 1 0
,这是错误的,是未定义的行为。 - David Ranieri