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 문자형
- 컴퓨터는 내부적으로 문자도 숫자로 바꿔서 저장하고, 내부적으로 처리할 때 정수처럼 처리를 함 -> 문자형을 정수형의 일부로 분류하는 이유
#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
'Study_C, C++ > 홍정모의 따라하며 배우는 C언어' 카테고리의 다른 글
[홍정모의 따라하며 배우는 C언어] 3.13 불리언형 ~ 4.2 sizeof 연산자 (0) | 2021.08.13 |
---|---|
[홍정모의 따라하며 배우는 C언어] 3.11 부동소수점형 ~ 3.12 부동소수점형의 한계 (0) | 2021.08.12 |
[홍정모의 따라하며 배우는 C언어] 3.7 다양한 정수형들 ~ 3.8 8진수와 16진수 (0) | 2021.08.08 |
[홍정모의 따라하며 배우는 C언어] 3.5 정수와 실수 ~ 3.6 정수의 오버플로우 (0) | 2021.08.07 |
[홍정모의 따라하며 배우는 C언어] 3.4 간단한 입출력 프로그램 만들기 (0) | 2021.08.02 |