intサイズが2バイト、longサイズが4バイトの処理系では、long型の変数 c は、a + b の結果 40000 を格納することができるが、 int と int の演算である a + b は型変換が行われず、40000 を格納することができない。
よって、a + b を long型でキャストしてやる必要がある。
#include <stdio.h>
int main( void )
{
int a = 30000, b = 10000;
long c;
c = ( long ) a + b;
return 0;
}
#include <stdio.h>
int main( void )
{
int a = 3000;
int b = 5000;
long kekka;
kekka = ( long ) a * 12 + ( long ) b * 8;
printf( "結果 = %ld\n", kekka );
kekka = ( long ) a * 8 + ( long ) b * 12;
printf( "結果 = %ld\n", kekka );
return 0;
}
※ 練習用にキャストを用いていますが、a, b 共に long を用いてキャストを省いてもかまいません。
また、intサイズが4バイトの処理系ではこのキャストは不要です。
▼戻る▼
「初心者のためのポイント学習C言語」 Copyright(c) 2000-2004 TOMOJI All Rights Reserved