단순 대입 연산자
A = B
B 혹은 B에 들어있는 값을 A에 저장
메모리에 정보를 저장하는 것.
기존에 저장된 값이 있다면 덮어쓰기가 됨.
대입 연산자의 왼쪽 : l-value(A)
오른쪽 피연산자 : r-value(B)
메모리의 쓰기가 일어남
l-value는 반드시 메모리일 것.
ex) int A = 0;
A = 3;
변수를 선언할 때 A를 0으로 초기화.
그리고 변수 A에 정수 3을 대입하는 의미.
기존에 있던 0의 정보는 지워지고
3의 정보로 변경되어 저장됨.
int A = 0 에서의
‘=’은 단순대입연산자가 아니라
변수 선언할 때의 문법상 필요에 의한 것.
비슷한 예로 ‘*’은 곱셈 연산자이지만
변수를 선언할 때는 포인터를 의미.
오류 코드들
1) 3 = 4;
정수형 상수 3에 상수 4를 저장할 수 없음.
l-value에는 메모리가 위치해야 함.
상수는 쓰기가 허용되지 않고
또한 값을 저장할 수 있는 메모리도 아니다.
2) char Name[8];
Name = 1;
배열의 본질은 주소이고
그 주소는 상수.
따라서 상수에는 값을 저장할 수 없다.
3) const : 형 한정어, 읽기전용화, 상수화
const int Data = 10;
Data = 20;
const를 선언하면 해당 변수는
정보의 읽기만 할 수 있고
다른 정보를 저장할 수 없게 된다.
변수의 상수화가 된 것.
10 = 20; 이라는 결과를
초래하기 때문에 오류가 발생.
int A = 0;
const int Data = 10;
A = Data;
변수 Data를 상수화 하였지만
데이터의 읽기는 가능하므로
위와 같은 코드는 오류가 아니다.
변수 A에 10의 정보가 저장됨.
const를 사용하는 이유는
메모리의 확보도 하고
정보의 훼손을 방지하기 위함.
** 잘못알고 있는 것이 있으면 댓글로 알려주시면 감사하겠습니다! **
'프로그래밍 > C언어' 카테고리의 다른 글
쇼트서킷(Short-circuit) (0) | 2018.07.02 |
---|---|
단항 증감 연산자 (0) | 2018.06.28 |
비트연산자 (0) | 2018.06.28 |
자료형, 보수와 음수표현 (0) | 2018.06.14 |
형식 문자열 입출력 함수 ( 스캔셋 ) (3) (0) | 2018.06.07 |