F.R.I.D.A.Y.

상수의 접미어 본문

DEV/C C++

상수의 접미어

F.R.I.D.A.Y. 2019. 4. 13. 22:26
반응형

 일반적인 경우에는 잘 사용하지 않지만, 그렇지만 종종 사용하게 되는 접미사에 대해 배워봅니다.

 구글에 '접미사'를 검색하면 아래와 같은 결과나 나오네요.

 여느 언어처럼 C/C++에도 접미어, 접두사가 있습니다. 이번 시간은 접미어를 알아보죠. 접두사는 다음에 알아보는걸로!


접미사

 정수 상수는 int, 실수 상수는 double이 기본형이라고 지난 포스트에서 말했습니다. 그렇다면 다른 자료형으로 정수나 실수 상수를 선언하려면 어떻게 할까요? 이런 상황때문에 접미사가 탄생했다고 보면 되겠습니다.

 C/C++에서도 접미사는 자연어와 마찬가지로 어떤 단어나 성분 뒤에 붙게 됩니다. 정수나 실수 상수(리터럴)이 성분이라고 보면 될것같습니다.


접미사의 종류

 접미사는 여러가지가 존재합니다.

자료형 접미사
unsigned int u, U
long l, L
unsigned long ul, UL
long long ll, LL
unsigned long long ull, ULL
float f, F
long double l, L

 참고

 정수형 상수의 접미사와 실수형 상수의 접미사가 왜 같은게 존재하느냐! 라고 하실 수 있습니다. 컴파일러는 선행하는 리터럴이 정수냐 실수냐에 따라 뒤에 붙는 접미사를 다르게 생각합니다. 우리가 '배를 먹었다', '배를 탔다'와 같이 같은 단어를 다르게 이해하는 것처럼요.

(data Type) a = 0L;   // 1번
(data Type) b = 0.0L; // 2번

 위 코드에서 a와 b라는 변수에 각 0L과 0.0L이 붙게 되면, 각 접미사의 리터럴이 1번은 0(정수)이고, 2번은 0.0(실수)입니다. 이런 식으로 구분을 하게 되니 참고하세요.

 

 이전에는 int 자료형보다 큰 값을 작성할 때는 꼭 접미사가 붙어야 했던 것으로 기억하는데 요새는 컴파일러가 발달해서인지 컴파일러가 오류보단 알아서 인식해서 값을 수정해주더라구요 :)


접미사의 특성: sizeof(int) > -1

sizeof(int) > -1

 위 코드는 false를 반환합니다. 그 이유는 sizeof(int)가 4U를 반환하기 때문이죠. 위에서 말씀 드렸다시피 정수+U는 unsigned int 타입입니다.

unsigned int 타입을 반환합니다.

 그런데 연산자의 기본타입은 int입니다. MSVC에서는 unsigned가 signed보다 상위로 판단한다고 하니, sizeof(int) = 4U = unsigned 4 이고, -1은 -1 = 0xFFFF FFFF = 4,294,967,295 즉 4U보다 -1이 크다고 판단하게 되네요. 따라서 sizeof(int) > -1 은 false가 나오게 됩니다.

 

 암시형변환의 자세한 내용은 아래 글을 참고하세요.

 

Implicit conversions - cppreference.com

When an expression is used in the context where a value of a different type is expected, conversion may occur: int n = 1L; // expression 1L has type long, int is expected n = 2.1; // expression 2.1 has type double, int is expected char *p = malloc(10); //

en.cppreference.com


참고하세요

 

정수 형식의 상수에 대한 표현 정리

: C 언어 관련 전체 목차http://blog.naver.com/tipsware/221010831969​이 글은 아래에 링크한 글과 연관...

blog.naver.com

 

728x90
반응형

'DEV > C C++' 카테고리의 다른 글

scanf_s 사용하기  (2) 2019.04.28
배열 선언을 x-y가 아니라 y-x순으로 작성하는 이유  (4) 2019.04.24
예외처리 - assert 사용해보기  (0) 2019.04.12
숫자의 형변환  (2) 2019.04.11
변수 초기화  (0) 2019.04.06
Comments