説明
整数定数は、123のようにスケッチの中で直接使われる数字です。デフォルトでは、これらの数値はintとして扱われますが、UとLの修飾子を使ってこれを変更することができます(後述)。
通常、整数定数はベース10(10進法)の整数として扱われますが、他のベースの数値を入力するために特別な記法(フォーマッタ)を使用することができます。
BASE | EXAMPLE | FORMATTER | COMMENT |
---|---|---|---|
10 (decimal) |
123 |
none |
|
2 (binary) |
0b1111011 |
leading “0b” |
characters 0&1 valid |
8 (octal) |
0173 |
leading “0” |
characters 0-7 valid |
16 (hexadecimal) |
0x7B |
leading “0x” |
characters 0-9, A-F, a-f valid |
10進法(ベース10)
これは、皆さんがよく知っている常識的な数学です。他の接頭辞のない定数は10進法であるとみなされます。
プログラム例
n = 101; // 101と同じ 10進法 ((1 * 10^2) + (0 * 10^1) + 1)
バイナリー(ベース2
0と1の文字だけが有効です。
プログラム例
n = 0b101; // 5と同じ10進数 ((1 * 2^2) + (0 * 2^1) + 1)
8進法(ベース8)
0から7までの文字のみが有効です。8進法の値は、接頭辞「0」(ゼロ)で示されます。
プログラム例
n = 0101; // 65進数と同じ ((1 * 8^2) + (0 * 8^1) + 1)
定数の前に(意図せずに)先頭の0を入れてしまい、コンパイラが意図せずに定数を8進数として解釈してしまうことで、見つけにくいバグが発生する可能性があります。
16進法(ベース16)
有効な文字は0~9とA~Fで、Aは10、Bは11、Fまでは15となります。Aは10、Bは11、Fは15となります。なお、A-Fは大文字(A-F)でも小文字(a-f)でもよい。
プログラム例
n = 0x101; // 10進257桁と同じ ((1 * 16^2) + (0 * 16^1) + 1)
注意と警告
U & L フォーマッタ。
デフォルトでは、整数定数はintとして扱われ、それに伴う値の制限があります。整数定数を別のデータ型で指定するには、それに続いて次のように記述します。
a ‘u’ または ‘U’ を付けると、定数を強制的に符号なしのデータ形式にします。例 33u
a ‘l’ または ‘L’ は、定数を強制的に長いデータ形式にします。例:100000L
a ‘ul’ または ‘UL’ は、定数を強制的に符号なしの長い定数にします。例 32767UL