字符串字面量在内存中保证相邻吗?

5

字符串字面量是否保证在内存中相邻存储?

因此,下面的代码是否一定会输出hellohello

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

3
第一句话是未定义行为,因此您没有任何保证。 - GManNickG
一般而言,在 C 语言中几乎没有什么是可以保证的,如果代码看起来很奇怪,那么它很可能是未定义行为。 - hugomg
5
C语言中有许多保证,@missingno。这就是标准的全部含义... - pmg
1个回答

10
不,字符串字面值的存储位置由编译器自行决定。你在连续的两行中声明了两个字符串字面值是无关紧要的。你不能对编译器将它们存储在哪里做出任何假设。
编译器可以进行各种操作。例如,如果你编写以下代码:
printf("hello");
printf("hello");

那么编译器就完全可以只创建一个字面量。或者不这样做。


感谢澄清和帮助。有关此事的C标准的任何信息吗? - phoxis
当您提到标准时,我不确定我理解您的意思。 - David Heffernan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接