방금 리터럴 상수배웠는데
그러면 상수도 선언이 되고 메모리를 할당시켜 저장하죠?
그렇다면
int a = 1+2+3+4+5;
는 1,2,3,4,5처럼 5개의 int형 상수를 선언하기 때문에
VS기준으로 4바이트메모리를 5개 할당해서 총 20바이트의 메모리에 저장하게 되는거죠?
그러면
int a = 15; //15=1+2+3+4+5
같은 경우는 위에 처럼 5개의 상수를 선언해서 연산하는것이 아닌
연산된 결과를 int형 상수로 선언하였기에 메모리를 4바이트만 할당하여 저장하게되기때문에
두번째의 경우가 오히려 메모리공간을 덜 낭비하게 되는것이죠?
그냥 둘다 4바이트씀.
컴파일러가 미리 계산해서 15로 치환하므로 실행시는 같음.
왜 20바이트라고 생각하냐?
1,2,3,4,5 메모리 할당하지않음
상수 식은 컴파일러가 컴파일 타임에 미리 다 계산해 놓음.
상수도 메모리 차지하는 건 맞는데 (접근을 못할 뿐 instruction의 immediate operand로 오니깐) 저건 좀 잘못된 예시라는 거지.