컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, April 18, 2007

C언어] signed int 를, unsigned int 로 상호 변환, 캐스팅


C에서는 내부적으로 unsigned 형을 잘 지원하기에, 별도의 함수를 만들지 않고도, signed형과 unsigned형을 상호 변환할 수 있습니다.

예를 들어 변수명이나 숫자 앞에
(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;
}



▶▶ C언어] unsigned 형의 의미, 부호 없는 정수, unsigned int, signed char




tag: cpp
C언어 | C/C++ (Visual C++)

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top