2006-12-18 RiSKさんのブログのコメント欄でやたらと盛り上がってしまったのですが、char型またはwchar_t型の配列を文字列リテラルで初期化する場合、配列の要素数より(初期化子である)文字列リテラルの文字数の方が少ないとき、ナル文字以降の値はどうなるのか、という話題です。実際のコードで示すと、次のような場合です。 char str[5] = "abc"; C言語であれば、ナル文字以降は '\0' で初期化されることが、規格上はっきりと規定されています。つまり、上のコードは、 char str[5] = { 'a', 'b', 'c', '\0', '\0' }; と等価になります。 C++でも、この辺りの事情は同じだと思っていました。実際、私が知る限りの処理系では、C言語と同じように振る舞います。ところが、C++の規格であるJIS X3014:2003を読むと、ナル文字以降