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