int array1[3]{1,2,3}; //깊이의 기능을 포함
int array[3]{};
array2 = array1;
// array2에 array1의 원소들을 대입하겠다 - 에러 왜?
//식이 수정할 수 있는 l-value 여야 합니다.
연산자를 기준으로
왼쪽은 L-VALUE(leftvalue)
오른쪽은 R-VALUE(right value)
L VALUE
객체(object-타입을가지고 이름이 붙은),
한줄의 코드를 넘어서도 지속되는 객체
변수(이름을 붙여놓음)
R VALUE
일반적인 값(VALUE)
현재 코드에서만 유지되는 값
이름이 붙어잇지 않아 접근가능한 방법이 없음
리터럴, 이름없는 객체
int x ;
x =3;
// =연산자의 의미는 왼쪽 피연산자에 오른쪽 피연산자를 대입한다는 뜻
3=x;
// 안됨 l-value가 3일까??????
int y;
y=x; // 에러 안남
X+3 // +연산자는 둘다 RVALUE를 원하기 때문에 문제 없음
X=3 // =연산자는 RVALUE와 LVALUE를 원하기 때문
int x = 3+4;
이름없는 객체가 3가지 등장함 3은 실제 저장될때 int 3
하지만 int 3은 이름이 없으므로 다음줄에서 접근가능하지 않음 이것이 rvalue
int 3 과 int 4 그리고 이 식을 게산한 결과가 이름없는 객체로 저장되는 것
int x{1};
int y{2};
x=y;
// 둘다 l value r value 로 바꾸기 가능함
lvalue는 rvalue로 치환가능함(안에 있는 값을 꺼내와서 값처럼 만들 수 있음)
2=x; // 불가능 이름이 없으므로 값을 꺼내올 수 없음
___
``` cpp
int array1[3]{1,2,3}; //깊이의 기능을 포함
int array[3]{};
array2 = array1;
// array2에 array1의 원소들을 대입하겠다 - 에러 왜?
//식이 수정할 수 있는 l-value 이어야함
= 연산자의 의미는 왼쪽에 l value가 나와야함
그런데 l value가 없다는 뜻 = array2는 l value가 아니라는 뜻임
왜 l value가 아닐까?
l value의 조건 중 하나는 변수 그럼 배열은 변수가 아닐까?????
배열은 인덱스가 붙어야 의미를 가짐 배열이름 자체는 아무 기능 없음
for(int i =0;i<3;I++)
array2[i] = array1[i]