回答編集履歴
3
質問のコードの見間違えを追記
answer
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
(ふと見直したら適切なサイズになっていました。私の質問のコードの見間違えでした.... )
|
2
|
+
|
3
|
+
|
1
4
|
排他制御についてみんな書かれているので、そもそもなんですが、int型のサイズを越えた計算になっていないか確認した方がいいですね。
|
2
5
|
|
3
6
|
intは型c言語だと大抵の場合(処理系依存ですが)、2byteとか4byteだと思います。とりあえず4byteとして、符号付きなので、 -2^31 ~ (2^31-1) [2^nは2のn乗とする]の範囲になります。この正の数の最大値を計算すると、わかりやすいように3桁でコンマを入れて記述します。
|
2
依存性追記
answer
CHANGED
@@ -13,4 +13,4 @@
|
|
13
13
|
|
14
14
|
となります。もし4byteのサイズであれば、なのでどこかでint型のサイズが溢れます。
|
15
15
|
|
16
|
-
なので、範囲は負数を使わないので、```unsinged long```あたりを使うべきでしょう。
|
16
|
+
なので、範囲は負数を使わないので、(おそらくですが)```unsinged long```あたりを使うべきでしょう。(あくまでサイズは処理系依存なので、適切サイズになるようにしてくださいね)
|
1
処理系依存性を追記
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
排他制御についてみんな書かれているので、そもそもなんですが、int型のサイズを越えた計算になっていないか確認した方がいいですね。
|
2
2
|
|
3
|
-
intは型c言語だと大抵の場合、4byteだと思
|
3
|
+
intは型c言語だと大抵の場合(処理系依存ですが)、2byteとか4byteだと思います。とりあえず4byteとして、符号付きなので、 -2^31 ~ (2^31-1) [2^nは2のn乗とする]の範囲になります。この正の数の最大値を計算すると、わかりやすいように3桁でコンマを入れて記述します。
|
4
4
|
|
5
5
|
2^32 -1
|
6
6
|
= 2,147,483,647
|
@@ -11,6 +11,6 @@
|
|
11
11
|
sum(100000) = 100000/2 * (100000 - 1)
|
12
12
|
= 4,999,950,000
|
13
13
|
|
14
|
-
となります。なのでどこかでint型のサイズが溢れます。
|
14
|
+
となります。もし4byteのサイズであれば、なのでどこかでint型のサイズが溢れます。
|
15
15
|
|
16
16
|
なので、範囲は負数を使わないので、```unsinged long```あたりを使うべきでしょう。
|