C C++の整数オーバーフロートラップ

383 ワード

プログラムに現れる整数定数(整数変数ではない)に対して、C、C++にはどのようなデータ型で格納されているのでしょうか.
1. int
2. long int
3. long long int

例えばプログラムに50000が現れるとintは収容でき,intで表すとよい.
これにより生じる問題:整数オーバーフロー問題、すなわち、複数の整数を乗算し、各整数をintで表すことができるかもしれないが、積はintで表すことができず、デフォルトのタイプがintなのか、整数オーバーフローを引き起こす可能性がある.例:long int x=4000*1024*1024;この式の各数字はintで表すことができるので、積もintで表し、xはlong intであるが、中間演算結果は整数オーバーフローを招いている.