データ型とサイズ
C言語の変数型とそのサイズ
一般的な変数型とそのサイズ一覧
https://guminote.sakura.ne.jp/wp-content/uploads/2020/12/C-MicroComputer-1-1024x719.png
問題点:
コンパイラ・処理系により変数のサイズが異なる。
例:int型は、VS C++やSTM32マイコン(ARMマイコン)では4バイト、 AVRマイコンでは2バイトの整数型として定義される。
参考:ARM
AVR
これを避ける為に、 「stdint.h」というヘッダで下記変数型が定義されている。
https://guminote.sakura.ne.jp/wp-content/uploads/2020/12/C-MicroComputer-2-1024x494.png
マイコンのプログラムでは、特に意識しなくても、stdint.hがどこかでインクルードされている事が多い。
変数型は、出来る限り小さいのを使う方が良い
理由:
マイコンのRAM容量は小さい為。
8ビットマイコンの場合、大きいサイズの変数型を用いると、計算時間に時間がかかってしまう。
32ビットマイコンで4バイト整数型は一度に実行するが、
8ビットマイコンで4バイト整数型は、1バイトごとに行われる為。
サイズの確認:https://paiza.io/projects/7Dj5z_lGBeoaUq7eDYSVPw
2,8,10,16進数の表記の仕方:
2進数:0bから始まる
8進数:0から始まる
16進数:0xから始まる
例:
code:c
/* numericals1.c 数値の表し方 */
#include <stdio.h>
int main(void)
{
int n;
n = 0b10100; /* 2進表記 */
printf("n = %d\n", n);
n = 024; /* 8進表記 */
printf("n = %d\n", n);
n = 20; /* 10進表記 */
printf("n = %d\n", n);
n = 0x14; /* 16進表記 */
printf("n = %d\n", n);
return 0;
}
実行結果:https://paiza.io/projects/847D89GGEKRr-xHxWNy83w?language=c
マイコンでは、ビット操作をするため、2進数がよく使われる。
参考:https://docs.oracle.com/cd/E19253-01/819-0395/chp-typeopexpr-2/index.html
https://guminote.sakura.ne.jp/archives/687#bitset