>初めまして、勉強中のサラリーマンです。以下のプログラムで、
>2回目の表示が32768となる理由について、どなたか教えて頂け
>ないでしょうか?
こういった問題は、お使いの環境を明示くださるようにお願いいたします。
また、掲示板1と2の回答者はほぼ共通ですから、多重投稿もお控えください。
intが4バイトの処理系では、
i = 65536;
i = i * (i + 1) / 2; の計算はサイズが足りず計算できません。
http://www9.plala.or.jp/sgwr-t/c_sub/TypeConversion.html
にありますように、処理系依存の型変換が生じます。
結果から見ますに、
A : 65536 * 65537 / 2
B : 2147483647
A % (Bの型の表現しうる最大値+1) = 4295032832 % 2147483648
の計算をして変換しているようです。
|