제로 확장... unsigned 일 때
부호 확장... signed 일 때


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 부호 확장
#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;
}



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 제로 확장
#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;
}



1
2
3
4
5
6
7
8
9
10
11
// 확장
#include <stdio.h>

int main()
{
	char c = 0x8A;
	
	printf("%x\n", c);
	
	return 0;
}

printf 인자로 스택영역에 있는 c의 값을 넘겼다. 여기서 스택은 메모리에 있고 버스(32 bit)를 통과함으로 확장이 일어난다. c 변수 자체가 signed이기 때문에 부호 확장이 일어났음을 알 수 있다.


+ Recent posts