teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

誤字の修正

2019/08/16 12:44

投稿

raccy
raccy

スコア21780

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