Wednesday, April 18, 2007
C언어] signed int 를, unsigned int 로 상호 변환, 캐스팅
C에서는 내부적으로 unsigned 형을 잘 지원하기에, 별도의 함수를 만들지 않고도, signed형과 unsigned형을 상호 변환할 수 있습니다.
예를 들어 변수명이나 숫자 앞에
(unsigned int)
이런 "캐스트 연산자"를 붙여 주면 unsigned int형으로 변환됩니다.
소스 파일명: example.cpp
▶▶ C언어] unsigned 형의 의미, 부호 없는 정수, unsigned int, signed char
예를 들어 변수명이나 숫자 앞에
(unsigned int)
이런 "캐스트 연산자"를 붙여 주면 unsigned int형으로 변환됩니다.
signed int, unsigned int 상호 변환 예제 소스
소스 파일명: example.cpp
#include <stdio.h>
int main(void) {
/////////////////////////////////////////////////////////
// signed int 를 unsigned int로 변환
// "%u" 라는 형식 지정자를 사용하여
printf("%u\n", -1); // 4294967295
// (unsigned int) 로 캐스팅하여
printf("%u\n", (unsigned int) -1); // 4294967295
// 변수에 캐스팅 연산자 사용하여
int n = -1;
printf("%u\n", (unsigned int) n); // 4294967295
// int형이 표현 가능한 최대값을 초과했기에 이런 경고 발생
// warning C4307: '+' : integral constant overflow
printf("%u\n", 0x7FFFFFFF + 1); // 2147483648
// 이때는 상수에 U 접미사를 붙여서, unsigned형 상수로 만들면 됨
printf("%u\n", 0x7FFFFFFFU + 1); // 2147483648
/////////////////////////////////////////////////////////
// 위와는 반대로, unsigned int형을 signed int 로 변환
// 그냥 int 는 "signed int"임
// "%d" 라는 형식 지정자를 사용하여
printf("%d\n", 4294967295); // -1
// (signed int) 또는 (int) 로 캐스팅하여
unsigned int x = 4294967295;
int y = (int) x;
printf("%d\n", y); // -1
return 0;
}
int main(void) {
/////////////////////////////////////////////////////////
// signed int 를 unsigned int로 변환
// "%u" 라는 형식 지정자를 사용하여
printf("%u\n", -1); // 4294967295
// (unsigned int) 로 캐스팅하여
printf("%u\n", (unsigned int) -1); // 4294967295
// 변수에 캐스팅 연산자 사용하여
int n = -1;
printf("%u\n", (unsigned int) n); // 4294967295
// int형이 표현 가능한 최대값을 초과했기에 이런 경고 발생
// warning C4307: '+' : integral constant overflow
printf("%u\n", 0x7FFFFFFF + 1); // 2147483648
// 이때는 상수에 U 접미사를 붙여서, unsigned형 상수로 만들면 됨
printf("%u\n", 0x7FFFFFFFU + 1); // 2147483648
/////////////////////////////////////////////////////////
// 위와는 반대로, unsigned int형을 signed int 로 변환
// 그냥 int 는 "signed int"임
// "%d" 라는 형식 지정자를 사용하여
printf("%d\n", 4294967295); // -1
// (signed int) 또는 (int) 로 캐스팅하여
unsigned int x = 4294967295;
int y = (int) x;
printf("%d\n", y); // -1
return 0;
}
▶▶ C언어] unsigned 형의 의미, 부호 없는 정수, unsigned int, signed char
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home