char 형식과 unsigned char 형식은 정수를 표현할 때도 사용할 수 있다고 했어요.
두 가지 형식 모두 1바이트를 할당하여 256가지의 정수를 표현할 수 있답니다.
unsigned char 형식은 부호 없는 정수만 표현하므로 0~0xFF(0~255)까지 표현 가능해요.
char 형식은 최상위 비트가 0인 0x00~0x7F(0~127)까지는 부호없는 정수예요.
그리고 최상위 비트가 1인 0x80~0xFF(-128~-1)까지는 부호있는 정수죠.
◈ char 형식과 unsigned char 형식의 표현 범위 확인
#include <stdio.h> int main() { char c = 0; unsigned char uc = 0; c = 0x7F; //최상위 비트가 0 uc = 0x7F; printf("%d %d\n",c,uc); c = 0x80; //최상위 비트가 1 uc = 0x80; printf("%d %d\n",c,uc); c = 0xFF; uc=0xFF; printf("%d %d\n",c,uc); return 0; }
◈ 실행 결과
127 127 -128 128 -1 255
다음은 부호 있는 정수를 표현하는 char, short, int, long 형식으로 표현할 수 있는 최대값과 최소값을 확인하는 코드예요.
◈ 부호 있는 정수 형식의 최솟값과 최댓값
#include <stdio.h> int main() { char c = 0x7F; short s = 0x7FFF; int i = 0x7FFFFFFF; long l = 0x7FFFFFFF; long long ll = 0x7FFFFFFFFFFFFFFFLL; printf("char max:%d ",c); c = 0x80; printf("char min:%d \n",c); printf("short max:%d ",s); s = 0x8000; printf("short min:%d \n",s); printf("int max:%d ",i); i = 0x80000000; printf("int min:%d \n",i); printf("long max:%d ",l); l = 0x80000000; printf("long min:%d \n",l); printf("long long max:%lld ",ll); ll = 0x8000000000000000; printf("long long min:%lld \n",ll); return 0; }
◈ 실행 결과
char max:127 char min:-128 short max:32767 short min:-32768 int max:2147483647 int min:-2147483648 long max:2147483647 long min:-2147483648 long long max: 9223372036854775807 long long min: -9223372036854775808
여기서 잠깐!
설마 눈으로만 보고 머리로 이해할 수 있다고 개발 도구에서 직접 확인하지 않는 것은 아니죠?
프로그램 언어는 개발 도구를 통해 몸으로 익혀야 합니다.
코드를 보면서 작성해도 오타가 나오거든요.
오류를 확인하면서 문제를 해결하는 것을 익히는 것은 매우 중요해요.