반응형

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;

 
  printf("%d\n", n) ;

  return 0;
}

 

 

<이상>

반응형

+ Recent posts