본문 바로가기

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

[홍정모의 따라하며 배우는 C언어] 3.9 고정 너비 정수 ~ 3.10 문자형

728x90

 3.9 고정 너비 정수

  • C언어는 각 자료형의 최소 메모리 크기만을 규정 지음 -> 정수형은 시스템마다 자료형의 크기가 달라질 수 있음 -> 이식성이 안 좋음
  • 위의 문제점을 해결하기 위해 변수, 자료형의 크기를 명확하게 고정할 수 있도록 하는 고정 너비 정수형 사용 
  • 고정 너비 정수형을 사용하여 정수를 너비가 고정되어 있는 자료형처럼 사용 가능
#include <stdio.h>
#include <stdint.h>	// 이미 inttypes.h에 포함되어 있음
#include <inttypes.h>		
			// printf문 사용시 형식 지정자를 사용해야 하는데 고정 너비 정수형의 형식 지정자를
			// 모름 -> 그걸 미리 정의해놓은게 inttypes.h

int main()
{	
	int i;
	int32_t i32;		// int의 크기를 32bit로 고정시킴 -> i32는 어느 시스템에 가더라도 32bit
	int_least8_t i8;	// 적어도 8bit를 가지고 있는 type
	int_fast8_t f8;		// 8bit중 가장 빠른거
	intmax_t imax;		// signed int 중 가장 큰 int
	uintmax_t uimax;	// unsigned int 중 가장 큰 int

	i32 = 1004;

	printf("me32 = %d\n", i32);
	printf("me32 = %" "d" "\n", i32);	// printf문 안의 문자열(""안의 문자열)을 3개로 나눔
	printf("me32 = %" PRId32 "\n", i32);	// 형식 지정자를 메크로로 바꿈
	// PRI(print)d(decimal)32(32bit 정수) -> 32bit 정수를 출력해라
    
	return 0;
}
  • 고정 너비 정수형은 새로운 자료형을 만드는 게 아니라 이미 존재하는 자료형에 이름만 바꿔서 붙인 것

 

3.10 문자형

  • 컴퓨터는 내부적으로 문자도 숫자로 바꿔서 저장하고, 내부적으로 처리할 때 정수처럼 처리를 함 -> 문자형을 정수형의 일부로 분류하는 이유

ASCII Chart. 어떤 숫자가 어떤 문자에 대응되는지 정리해놓은 표

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{	
	char c = 'A';		// 문자 하나는 작은 따옴표로 표현
	char d = 65;		// d = 'A' -> 65는 'A'에 대응하는 숫자
	char e = '*';

	printf("%c %hhd\n", c, c);	// 문자는 문자, 숫자 각각의 형태로 출력 가능
	printf("%c %hhd\n", d, d);
	printf("%c %hhd\n", e, e);	

	printf("%c \n", c + 1);		// 문자와 정수를 혼용해서 사용 가능

	return 0;
}

 

Output : 
A 65
A 65
* 42
B

 

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{	
	char a = '\a';		// 이스케이프 시퀀스. 실행시 종소리가 울리게 함
	printf("%c", a);		
				// \a 의 ASCII code는 7
	printf("\07");		// 8진수 7
	printf("\x7");		// 16진수 7

	printf("\x23");		// # 출력

	return 0;
}

 

Output : 
#

 

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
	float salary;
	printf("$______\b\b\b\b\b\b");	// _를 6개 출력 후 6칸 전으로 돌아감
	scanf("%f", &salary);		// scanf 입력을 $옆의 첫번째 _에서 기다림

	return 0;
}

 

Output : 
$______ -> 가장 앞의 _ 에서 입력을 기다림

 

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
	printf("AB\tCDEF\n");	// tab키를 눌렀을 때와 동일한 효과. 새로로 줄을 맞춰줌
	printf("ABC\tDEF\n");

	printf("\\ \'HA+\' \"Hello\" \?\n");	
 	   // \, ', " 등의 기호들을 출력하려 할 때 \ 뒤에 해당 기호들을 입력 (이스케이프 시퀀스)
	return 0;
}

 

Output : 
AB      CDEF
ABC     DEF
\ 'HA+' "Hello" ?

 

 

 


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

 

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

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

www.inflearn.com