Soh*_*dhi 1 c++ operators pre-increment
有人可以解释以下代码中发生的事情吗?(摘自GeeksForGeeks)
int main(){
int a = 10;
++a = 20; // works
printf("a = %d", a);
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
执行语句++ a = 20时究竟发生了什么?另外,请澄清为什么此代码执行失败?
int main(){
int a = 10;
a++ = 20; // error
printf("a = %d", a);
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当你这样做
++a = 20;
Run Code Online (Sandbox Code Playgroud)
它大致相当于
a = a + 1;
a = 20;
Run Code Online (Sandbox Code Playgroud)
但是,当你这样做
a++ = 20;
Run Code Online (Sandbox Code Playgroud)
它大致相当于
int temp = a;
a = a + 1;
temp = 20;
Run Code Online (Sandbox Code Playgroud)
但变量temp并不存在.结果a++是一个叫做右值的东西,那些不能分配给它们.Rvalues应该位于任务的右侧,而不是左侧.(这基本上是什么l,并r在lvalue和rvalue得来的.)