반응형
보통 흔히 선언하는 int, float 등은 현재 컴퓨터의 자원을 고려하여 컴퓨터가 유동적으로 알아서 해주는데,
임베디드 시스템 등의 제한된 메모리를 갖는 MCU는 그 자원을 최대한 아껴써야 한다.
한정된 자원을 효율적으로 쓰기 위해서는 딱 맞는 메모리를 부여해야한다.
임의로 비트를 지정한 선언을 아래와 같이 할 수 있다.
또한 printf문으로 출력시 아래와 같이 할 수 있다.
#include <stdio.h>
#include <Stdint.h> //메모리를 고정적으로 설정하기 위한 라이브러리.
/*
이식성을 염두해 둔 코드를 작성할때.
컴파일러 환경에 따라, char, short, int, long, long long 의 메모리크기가 다르게 설정될 수 있는데,
이를 강제적으로 고정된 메모리에 할당하게 만들어주는 라이브러리.
*/
int main()
{
int8_t num1 = -128; // 8비트(1바이트) 크기의 부호 있는 정수형 변수 선언
int16_t num2 = 32767; // 16비트(2바이트) 크기의 부호 있는 정수형 변수 선언
int32_t num3 = 2147483647; // 32비트(4바이트) 크기의 부호 있는 정수형 변수 선언
int64_t num4 = 9223372036854775807; // 64비트(8바이트) 크기의 부호 있는 정수형 변수 선언
// int8_t, int16_t, int32_t는 %d로 출력하고 int64_t는 %lld로 출력
printf("%d %d %d %lld \n", num1, num2, num3, num4); // -128 / 32767 / 2147483647 / 9223372036854775807
uint8_t num5 = 255; // 8비트(1바이트) 크기의 부호 없는 정수형 변수 선언
uint16_t num6 = 65535; // 16비트(2바이트) 크기의 부호 없는 정수형 변수 선언
uint32_t num7 = 4294967295; // 32비트(4바이트) 크기의 부호 없는 정수형 변수 선언
uint64_t num8 = 18446744073709551615; // 64비트(8바이트) 크기의 부호 없는 정수형 변수 선언
// uint8_t, uint16_t, uint32_t는 %u로 출력하고 uint64_t는 %llu로 출력
printf("%u %u %u %llu \n", num5, num6, num7, num8); // 255 / 65535 / 4294967295 / 18446744073709551615
return 0;
}
테스트 결과
반응형
'C언어 \ C++' 카테고리의 다른 글
[C언어] 2차원 배열의 크기 보기 배열의 sizeof 사용법 (0) | 2021.09.19 |
---|---|
[C언어] C언어에서 Const 선언이 갖는 의미. (안전성 있는 상수 선언) (0) | 2021.09.19 |
[C언어] C언어 printf 문 표준출력, 모든 변수 타입 출력 방식 (0) | 2021.09.18 |
[C언어] C언어 웹 컴파일러 사용하기 (무설치 컴파일러) (2) | 2021.09.18 |
[C언어] C언어로 AND gate, OR gate, NAND gate, NOR gate 만들기 (0) | 2021.09.18 |