int a=0;
++(a++);
或者++a++;
程序出错;因为a++返回的是一个临时变量,而临时变量都是const,表示的是一个右值,对常量++显然错误。
左值和右值的区分:
左值和右值都是针对表达式而言的,左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时就不再存在的临时对象。一个区分左值与右值的便捷方法是:看能不能对表达式取地址,如果能,则为左值,否则为右值。
int a=0;
++(a++);
或者++a++;
程序出错;因为a++返回的是一个临时变量,而临时变量都是const,表示的是一个右值,对常量++显然错误。
左值和右值的区分:
左值和右值都是针对表达式而言的,左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时就不再存在的临时对象。一个区分左值与右值的便捷方法是:看能不能对表达式取地址,如果能,则为左值,否则为右值。