C 언어 const 변수 만들 때 자료형을 지정하지 않으면 const int로 취급
글. 오상문 sualchi@daum.net
const 변수를 만들 때 자료형을 당연히 지정해야 한다고 생각했는데,
박서* 학생이 const만 썼는 데도 에러가 나지 않는다고 해서 자료를 찾아봤는데 그런 내용을 찾지 못했습니다.
일단 DevCpp와 비주얼 스튜디오 2015에서 테스트 해보니 아래처럼 작성한 코드가 잘 동작합니다.
#include <stdio.h>
int main()
{
const num = 1.1; // 경고를 찾아보기 위해 실수형 값도 넣어봄
printf("%d", sizeof(const)); // const 크기는 4바이트로 나옴
return 0;
}
비주얼 스튜디오에서 나오는 경고 메시지를 보면 대충 짐작이 가능한데 바로 이 메시지입니다.
warning C4244: '초기화 중': 'double'에서 'const int'(으)로 변환하면서 데이터가 손실될 수 있습니다.
메시지를 보면 const만 지정한 변수가 const int로 취급되는 것을 알 수 있네요. 이게 C 언어 공식 규격인지는 모르겠지만, 두 컴파일러에서 잘 돌아가는 것을 보면 다른 C 컴파일러도 가능할 것 같습니다.
참고로 예전에 레지스터 변수도 굳이 int를 붙이지 않아도 되었던 것 같네요. 그래서 다시 확인해봤는데 const처럼 register 변수도 자료형을 지정하지 않으면 int로 처리되네요.
#include <stdio.h>
int main(void)
{
register n = 100;
return 0;
}
<이상>
'C' 카테고리의 다른 글
C 언어, 복소수 합, 곱 예제 (0) | 2019.05.23 |
---|---|
C 언어, 10진수를 2진수로 출력하기 (0) | 2019.05.17 |
DevCpp printf, scanf 함수 long double 형 %LF 서식 오류 (0) | 2019.04.16 |
C 언어, 10진 정수를 2진수로 출력하기 (0) | 2019.03.09 |
C 언어, 달팽이 배열 출력하기 (0) | 2019.03.04 |