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

 
Saturday, October 21, 2006

C언어/자바,Java] char를 int로 변환; char to float, long, 자료형 타입 캐스팅


어떤 자료형을 다른 자료형으로 변환하기 위해서는, 캐스트 연산자로 타입 캐스팅을 하면 됩니다.

변환하고 싶은 자료형을 (int) 이렇게 소괄호 속에 기입해서, 변환 대상 앞에 붙이면 됩니다.

C언어는 물론이고, 자바에서도 마찬가지입니다. 다만 자바에는 unsigned 형이 없습니다.


그런데 캐스팅 자체는 쉽지만, 큰 자료형을 작은 자료형으로 변환할 때에는 문제가 있습니다. 예를 들어,

unsigned char 는 최대 255 까지 저장할 수 있기에, 255가 넘는 int / unsigned int / long 등을 캐스팅하여 억지로 대입하면, 값이 리셋되어 0부터 다시 시작하게 되어 버립니다. 즉 캐스팅이 되지 않습니다. 그렇다고 해서 에러가 나는 것도 아니기에 버그의 원인이 될 가능성이 높습니다.



타입 캐스팅 (자료형 변환) 예제 소스


파일명: 0.cpp
#include <stdio.h>

int main(void) {

  unsigned char uc = 'A'; // A 의 아스키 코드는 10진수로 65
  char           c = 'B'; // B 의 아스키 코드는 10진수로 66
  printf("%d %d\n", (int) uc, (int) c); // char 를 int 로 변환 출력
  // 결과: 65 66



  int           i = 48152;
  unsigned int ui = (unsigned int) i; // int 를 unsigned int 로 변환
  printf("%u\n", ui);
  // 결과: 48152



  char         c2  = 'A';
  float         f  = (float) c2; // char 를 float 로 변환
  printf("%f\n", f);
  // 결과: 65.000000



  // 잘못된 결과
  unsigned int  ix =  256;
  unsigned char cx = (unsigned char) ix; // 문제 발생
  printf("%d\n", cx);
  // 결과: 0



  return 0;
}



각 자료형의 한계값이 여기에 있습니다: ▶▶ [C언어] 정수 실수 종류(데이터형) / 최소값 최대값 - char int float - Data Type Ranges

▶▶ 자바.Java] 정수 실수 종류(데이터형;자료형), 최소값/최대값: int, long, float, double

☞ C/C++

☞ 자바(Java)

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