C++零基础——C++对左值、右值的优化

by LauCyun Jun 18,2015 05:36:31 3,460 views

首先,

#include<stdio.h>
#include<stdlib.h>

int main()
{
	int i = 3;
	(++i)++;     //error C2105: “++”需要左值
	(i = 2) = 4; //error C2106: “=”: 左操作数必须为左值
	return 0;
}

其中,++i 和 i=2 都是右值,所以C语言中无法把右值转成左值。接着,看CPP,如:

#include<iostream>
using namespace std;
int main()
{
	//C++会把有内存实体的右值转化为左值
	int i = 10;
	(++i) = 3;          //i = 3
	(i = 2) = 9;        //i = 9
	cout << i << endl;  //9
	return 0;
}

C++中编译器会把内存实体的右值转化成左值。

Tags