본문 바로가기

Study_C, C++/홍정모의 따라하며 배우는 C언어

[홍정모의 따라하며 배우는 C언어] 3.7 다양한 정수형들 ~ 3.8 8진수와 16진수

728x90

3.7 다양한 정수형들

 

정수 자료형들의 크기

  • 최소 크기는 각 자료형이 최소한 이만큼의 크기를 가져야 함을 의미 -> C언어는 각 자료형의 최소 메모리 크기만을 규정 지음
  • long은 int가 2byte일 때 만들어졌으므로 4byte
  • 형식 지정자에서 h는 짧음을 의미
  • 형식 지정자는 C언어에서만 사용
#include <stdio.h>
#include <limits.h>
#include <stdlib.h>

int main()
{
	char c = 65;
	short s = 200;
	unsigned int ui = 3000000000U;	// 뒤의 U, L, LL은 생략 가능 (리터럴의 자료형을 표현해주는 기호들)
	long l = 65537L;							
	long long ll = 12345678908642LL;			

	printf("char = %hhd, %d, %c\n", c, c, c);	// %c는 변수를 문자로 출력함
	printf("short = %hhd, %hd, %d\n", s, s, s);	// hhd(char)는 -128 ~ 127까지 표현 가능. overflow 발생
	printf("unsigned int = %u, %d\n", ui, ui);	// d(signed int)는 표현 범위가 unsigned int와 달라서 overflow 발생
	printf("long = %ld, %hd\n", l, l);		// hd(short)는 long보다 표현 범위가 작음 -> overflow
	printf("long long = %lld, %ld\n", ll, ll);	// long은 long long보다 표현 범위가 작음 -> overflow

	return 0;
}

 

Output : 
char = 65, 65, A	->	65는 문자 'A'를 표현하는 숫자
short = -56, 200, 200
unsigned int = 3000000000, -1294967296
long = 65537, 1
long long = 12345678908642, 1942899938
  • 각 자료형마다 표현 범위가 다르므로 형식 지정자를 잘 맞춰줘야 함

 

3.8 8진수와 16진수

 

#include <stdio.h>

int main()
{	
	unsigned int decimal = 4294967295;		// 10진수
	unsigned int binary = 0b11111111111111111111111111111111;	// 2진수
	unsigned int oct = 037777777777;		// 8진수는 앞에 0을 붙임
	unsigned int hex = 0xffffffff;			// 16진수는 0x를 붙임

	printf("%u\n", decimal);
	printf("%u\n", binary);
	printf("%u\n", oct);
	printf("%u\n", hex);

	printf("%o %x %#o %#x %#X", decimal, decimal, decimal, decimal, decimal);
	// o = 8진수, x = 16진수, #o = prefix를 붙여서 8진수로 출력
  	// #x = prefix를 붙여서 16진수로 출력, #X = 대문자로 출력
    
	return 0;
}

 

Output : 
4294967295
4294967295
4294967295
4294967295
37777777777 ffffffff 037777777777 0xffffffff 0XFFFFFFFF -> 0은 8진수, 0x는 16진수임을 의미

 

 


강의 출처 : https://www.inflearn.com/course/following-c/dashboard

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com