제로 확장... unsigned 일 때
부호 확장... signed 일 때
// 부호 확장
#include
int main()
{
char A = 0x7A;
int B = A;
printf("B = %x\n", B);
A = 0x8A;
B = A;
printf("B = %x\n", B);
return 0;
} |
// 제로 확장
#include <stdio.h>
int main()
{
unsigned char A = 0x7A;
unsigned int B = A;
printf("B = %x\n", B);
A = 0x8A;
B = A;
printf("B = %x\n", B);
return 0;
} |
// 확장
#include <stdio.h>
int main()
{
char c = 0x8A;
printf("%x\n", c);
return 0;
} |
printf 인자로 스택영역에 있는 c의 값을 넘겼다. 여기서 스택은 메모리에 있고 버스(32 bit)를 통과함으로 확장이 일어난다. c 변수 자체가 signed이기 때문에 부호 확장이 일어났음을 알 수 있다.