C和C++中的赋值表达式结果略有不同,先说结论:
C中赋值表达式返回的是左操作数的新值,即一个右值
C++中赋值表达式返回的是一个被修改后的左操作数,即一个左值
如以下代码
int a;
a = 10; //C中此表达式的结果为10,而在c++中此表达式的结果为a
论据:
在C中写以下代码是不能通过编译的
int a;
int *p = &(a = 10);
错误信息如下:
这说明此表达式的最终结果为一个右值,即10.
但在C++中
int a;
int *p = &(a=10);
printf("%p\n%p\n",p,&a);
输出结果如下: