5

文字列リテラルがメモリに隣接して格納されることが保証されていますか?

したがって、以下は必然的に出力を取得しますかhellohello

printf(3 + "%d");
printf("hello");
4

1 に答える 1

10

いいえ、文字列リテラルはコンパイラが好きな場所に保存されます。それらのうちの2つを連続した行で宣言したという事実は関係ありません。コンパイラがそれらをどこに格納するかについては、仮定することはできません。

コンパイラはあらゆる種類のことを行うことができます。たとえば、次のコードを書く場合

printf("hello");
printf("hello");

その場合、コンパイラーは完全に自由に1つのリテラルのみを作成できます。か否か。

于 2012-04-21T20:12:30.230 に答える