回答編集履歴
4
1<<32がどうなるのが正しいか不明なので説明から除く
test
CHANGED
@@ -6,11 +6,11 @@
|
|
6
6
|
念のため解説もしておきます。
|
7
7
|
|
8
8
|
C++で普通に`1`と書いた場合、`int`型(通常32bit)の1と解釈されます。
|
9
|
-
そのため、たいていの処理系では`1 << 31`は-2147483648となります
|
9
|
+
そのため、たいていの処理系では`1 << 31`は-2147483648となります。
|
10
10
|
(細かいことを言うと、範囲外までシフトした場合の動作は未定義)
|
11
11
|
|
12
12
|
今回の問題では、`long long`型(64bit以上)の1である必要があるので、`1LL`と書きましょう。
|
13
|
-
`1LL << 31`なら2147483648に
|
13
|
+
`1LL << 31`なら2147483648になります。
|
14
14
|
|
15
15
|
参考 : https://cpprefjp.github.io/lang/cpp11/long_long_type.html より引用
|
16
16
|
> 符号付き整数型である`long long`を表す整数リテラルには、`ll`もしくは`LL`サフィックスを使用する。
|
3
1<<32の修正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
念のため解説もしておきます。
|
7
7
|
|
8
8
|
C++で普通に`1`と書いた場合、`int`型(通常32bit)の1と解釈されます。
|
9
|
-
そのため、たいていの処理系では`1 << 31`は-2147483648となりますし、`1 << 32`は
|
9
|
+
そのため、たいていの処理系では`1 << 31`は-2147483648となりますし、`1 << 32`は1となります。
|
10
10
|
(細かいことを言うと、範囲外までシフトした場合の動作は未定義)
|
11
11
|
|
12
12
|
今回の問題では、`long long`型(64bit以上)の1である必要があるので、`1LL`と書きましょう。
|
2
未定義の説明追加
test
CHANGED
@@ -6,7 +6,8 @@
|
|
6
6
|
念のため解説もしておきます。
|
7
7
|
|
8
8
|
C++で普通に`1`と書いた場合、`int`型(通常32bit)の1と解釈されます。
|
9
|
-
そのため、`1 << 31`は-2147483648となりますし、`1 << 32`は0となります。
|
9
|
+
そのため、たいていの処理系では`1 << 31`は-2147483648となりますし、`1 << 32`は0となります。
|
10
|
+
(細かいことを言うと、範囲外までシフトした場合の動作は未定義)
|
10
11
|
|
11
12
|
今回の問題では、`long long`型(64bit以上)の1である必要があるので、`1LL`と書きましょう。
|
12
13
|
`1LL << 31`なら2147483648に、`1LL << 32`なら4294967296となります。
|
1
解説追加
test
CHANGED
@@ -3,3 +3,13 @@
|
|
3
3
|
10000000000000000000000000000000
|
4
4
|
1
|
5
5
|
```
|
6
|
+
念のため解説もしておきます。
|
7
|
+
|
8
|
+
C++で普通に`1`と書いた場合、`int`型(通常32bit)の1と解釈されます。
|
9
|
+
そのため、`1 << 31`は-2147483648となりますし、`1 << 32`は0となります。
|
10
|
+
|
11
|
+
今回の問題では、`long long`型(64bit以上)の1である必要があるので、`1LL`と書きましょう。
|
12
|
+
`1LL << 31`なら2147483648に、`1LL << 32`なら4294967296となります。
|
13
|
+
|
14
|
+
参考 : https://cpprefjp.github.io/lang/cpp11/long_long_type.html より引用
|
15
|
+
> 符号付き整数型である`long long`を表す整数リテラルには、`ll`もしくは`LL`サフィックスを使用する。
|