본문 바로가기

c&c++

선언하는 자료형에 따라 상수의 자료형도 결정되는가?

대입 연산자의 왼편에 있는 자료형에 따라 상수의 자료형이 결정되는 것은 아니다.

 

다만, 대입 연산자의 오른편에 선언된 상수의 자료형에 어울리게 변수의 자료형을 선언했을 뿐이다.

 

char ch = 'A';

 

위와 같이 선언한다면 char형으로 표현된다고 생각할 것이다.

하지만 위의 문장은 컴파일러에 의해 다음과 같이 변한다.

 

char ch = 65;

 

65는 정수이므로 4바이트 크기의 int형으로 표현되어야 한다.

 

------------------------------------------------------------------------------

 

#include<stdio.h>

int main(void) {

char ch = 'A';

printf("literal int size: %d \n", sizeof(7));
printf("literal double size: %d \n", sizeof(7.14));
printf("sizeof(ch): %d \n", sizeof(ch));
printf("sizeof('ch'): %d \n", sizeof('ch'));
/* printf("sizeof(퍼센트s): %s", ch);  */ 왜인지는 몰라도 안 됨. 난리 남.
/* printf("sizeof(퍼센트c): %c", ch);  */
return 0;
}

 

 

출력값

literal int size: 4
literal double size: 8
sizeof(ch): 1
sizeof('ch'): 4