-- CUPによる違い --
C言語を使うにあたって切っても切れない話が、CPUの話になる。
なぜなら、C言語におけるもっとも基本的な型として整数型があげられますが処理系によってその長さは異なります。
16ビット系のCPUでは2Byte、32Bit以降は4Byteのint型を使うことが多いようですが定まっているわけではないので処理系のにより整数型の大きさは異なることに注意が必要です。
またラズベリーパイと一般的なx86系のCPUではCPU自体のタイプが異なることに注意しましょう、x86系CPUはSISCチップと呼ばれアセンブラ言語を構成するためのmicro codeと呼ばれるプログラムがCPUの中に搭載されていますが、ラズベリーパイやMacで使われているARM社製のCPUにはmicro codeが存在しないRISCチップが採用されています。
では以下のソースコードを見てみましょう。
#include <stdio.h>
int main()
{
printf("short %d\n",sizeof(short));
printf("int %d\n",sizeof(int));
printf("long %d\n",sizeof(long));
return(0);
}
このソースコードを-Sオプション付きでコンパイルしてx86とARM CPUのアセンブラを比較してみます。