short
,int
,long
型変数型によって扱える整数の範囲が異なります。型指定子で見た通り,扱える整数の範囲は,
char, short (short int), int, long (long int), long long (long long int)
の順に大きくなります。(扱える整数の範囲の確認方法は,後程見ます。)
これらの整数型変数の初期化方法は,基本的には,すべて同じです。ただ,char
型は ASCII文字を扱うことを想定しているので,「4.1. char
型変数」では文字定数による初期化を使いました。ここでは,整数という数を扱うことを前提にした初期化方法を見ます。
/* Example 4.2 */ #include <stdio.h> int main(void) { int a = 65, b = 0101, c = 0x41; long l = 65L, m = 0101L, n = 0x41L; printf("\t%%d\t%%o\t%%x\n"); printf("(a)\t%d\t%o\t%x\n", a, a, a); printf("(b)\t%d\t%o\t%x\n", b, b, b); printf("(c)\t%d\t%o\t%x\n", c, c, c); printf("\t%%ld\t%%lo\t%%lx\n"); printf("(l)\t%ld\t%lo\t%lx\n", l, l, l); printf("(m)\t%ld\t%lo\t%lx\n", m, m, m); printf("(n)\t%ld\t%lo\t%lx\n", n, n, n); return 0; }
65
や 0101
,0x41
は「整数定数」と呼ばれているものです(*)。接尾子 L
は long
型という意味です。65
は10進数の65,0101
は8進数で101,0x41
は16進数で41という意味です。また,printf
関数内の変換指定子ですが,long
型変数の出力には,%d
や %o
の d
や o
の前に l
を付します。また,\t
は水平タブです。これは文字定数に使えるエスケープ文字です。
実行結果です。
%d %o %x (a) 65 101 41 (b) 65 101 41 (c) 65 101 41 %ld %lo %lx (l) 65 101 41 (m) 65 101 41 (n) 65 101 41
すべての変数が整数 65 を意味しています。
*「整数定数」については「付録 文字定数,整数定数,浮動小数点定数」を参照。