자료형 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'가 씹힌다는 것입니다...
이거 왜 이럴까요? 혹시 아시는 분은 댓글 부탁드립니다.