C言語

C言語:通常の算術型変換について(1)

C言語で暗黙的に行われる型変換についてまとめます。今回は正しく動作しない例を紹介します。

どう動く?

以下のC言語のプログラムの出力を予想してください。

#include <stdio.h>

int main(void)
{
	int  a = 2000000000;
	int  b = 2000000000;
	long c = 4000000000;

	printf("%ld\n", (a + b) + c);
	printf("%ld\n", a + (b + c));

	return 0;
}

参考までに、現在の一般的なサーバやPCのC言語の処理系依存の整数の大きさは以下です。

  • int :32ビット
  • long :64ビット

実際の出力

わたくしのPCで試した結果は以下です。多くの環境で同じ結果になると考えています。

3705032704
8000000000

最後に

次の記事で、出力がこのようになる原因について解説いたします。

C言語を使いこなしていきましょう!

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA