回答編集履歴
1
誤字の修正
answer
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
- C++03以下: 未定義動作です。
|
4
4
|
- C++11以上: `char()`(ヌル文字)の値を持った参照を返しますが、代入した場合は未定義動作です。
|
5
5
|
|
6
|
-
となり、いずれの場合も未定義動作になります。未定義動作なのでその後の動作がどうなるかは予測不可能であり、コンパイラ・環境・実行タイミング等で結果も変わってくるでしょう。(今回は、質問者さんの環境では、たまたまたi=47まで行われて次の処理に進んだように見
|
6
|
+
となり、いずれの場合も未定義動作になります。未定義動作なのでその後の動作がどうなるかは予測不可能であり、コンパイラ・環境・実行タイミング等で結果も変わってくるでしょう。(今回は、質問者さんの環境では、たまたまたi=47まで行われて次の処理に進んだように見えただけで、場合によってはエラーで落ちる等もあり得ると言うことです。)
|
7
7
|
|
8
8
|
`string t(n/2, '\0');`等のようにサイズを指定して初期化するか、動的に増やしながら代入してください。
|
9
9
|
|