69,336
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int main(int argc, char* argv[]){
int i, j;
i = 5;
j = ++i++;
printf("%d\n", j);
return 0;
}
int temp;
temp = i;
i = i+1;
return temp;
i++返回的是编译器自动分配的临时变量temp,而这个temp并不是你程序中定义的可寻址变量的引用 ,也就是说你不能通
i = i+1;
return i;
返回的就是变量i本身,所以没有问题。j = ++i++;
根据运算符++自右向左的结核性,上面的代码等同于j = ++(i++);
则(i++)返回temp之后,不能作为左值,所以也就报错error: lvalue required as increment operandj = (++i)++;
就没有问题了。