개발/C

[C언어] 자료유형(자료형) char, signed char, unsigned char 차이점

Monsh 2015. 10. 27. 21:35
반응형

자료형 char, signed char, unsigned char의 차이점 : 저장값의 범위

 

char : -128 ~ 127

signed char : -128 ~ 127

unsigned char : 0 ~ 255

char, signed char, unsigned char의 저장값의 범위는 위와 같습니다.

 

그런데, 저 범위 때문에 어떤 차이가 생길까요?

사실 모르겠습니다...(아직 C언어 밖에 안 배운 초보라서 그렇겠죠)

 

char계열 자료형에 어떤 정수를 저장하면,

그 수에 대응하는 아스키코드 값의 문자가 나오게 됩니다.

출처 : http://blog.naver.com/chaneyoon/220410048912 (불펌 죄송합니다...)

 

최소 -128 부터 최대 255까지 값을

char, signed char, unsigned char 변수에 저장하면 어떤 문자가 나올까요?

그 결과를 알기 위한 코드는 아래와 같습니다.

 

/* 자료유형 char의 종류와 크기 */

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

void main()
{
 int integer, i;
 char character;
 signed char signchar;
 unsigned char unchar;
 FILE *out;

 out = fopen("out.txt", "w");
 for (i = -128; i < 256; i++)
 {
  character = i;
  signchar = i;
  unchar = i;
  fprintf(out, "when i = %3d, %c %c %c\n", i, character, signchar, unchar);
 };
 fclose(out);

 character = '\t';
 printf("'\t' = %d\n", character);
 character = ' ';
 printf("' ' = %d\n", character);
}

 

txt 파일로 결과가 나오도록 했고 (out.txt 첨부 돼있습니다.)

공백을 나타내는 문자가 몇 개가 되는데

그 중에 '\t'(tab)과 ' '(space)는 어디에 대응되는지 확인하기 위해

마지막 printf문을 둘 집어넣었습니다.

 

결론은, char, signed char, unsigned char의 차이를

C에서는 발견할 수가 없었습니다...

 

특이한 점은 -127 ~ -1, 129 ~ 254 범위에서는 해당되는 아스키코드 값이 없는데,

printf로 출력할 때 그 뒤에 '\n'가 씹힌다는 것입니다...

이거 왜 이럴까요? 혹시 아시는 분은 댓글 부탁드립니다.

out.txt

 

반응형