C和C++中左值和右值得区别以及++前置和后置的区别

来源:互联网 发布:xp 数据执行保护 编辑:程序博客网 时间:2024/06/12 07:08

左值是可以出现在表达式左边的值,可以被改变,是存储数据值的那块内存的地址,也可以称为变量的地址;

右值是指存储在某内存地址中的数据,也称为变量的数据。左值可以作为右值,但右值不能作为左值。

int  a=6;

 a++ 表示取a的地址,把它的值装入寄存器,然后增加内存中a的值;

++a 表示取a地址,增加它的内容,然后把值放在寄存器中。

int main(int argc, char* argv[])
{
int a = 6;
printf("%d\n",a++);//输出为6,返回的是寄存器的值,而不是加后的值
printf("%d\n",a);//输出为7,
        printf("%d\n",++a);//输出为8;
return 0;
}

a++ =7 和++a =7这两种写法,第一种是错误的,a++运算的结果并不是a变量的引用,而是一个临时变量,其值为a的值,属于右值不能为左值。

++a则可以,因为a的值是可变的。



1 0
原创粉丝点击