我很好奇,发现当前的代码不起作用,但我不明白为什么:
#include <stdio.h>
void main(){
int a = 42;
printf("%d\n", ++a++);
}
对我来说,这似乎不是一个错误的语法。有人可以解释一下错误输出吗?
first.c: In function ‘main’:
first.c:5:17: error: lvalue required as increment operand
printf("%d\n", ++a++);
最佳答案
++a++
等于 ++(a++)
(因为 operator precedence ),并且 a++
返回的值为一个non-lvalue object expression (也称为右值)。
此类值(本质上)是短暂的,无法通过前缀 ++
运算符进行修改。
关于c - 为什么增量运算++a++ 不起作用,至少在 C 中是这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51966237/