我写了以下程序:
#include <stdio.h>
main()
{
if("ddd" == "ddd")
printf("equal");
else
printf("not equal");
}
输出是“相等”,但根据我的说法,输出应该是“不相等”,因为字符串文字存储在文字池或某些只读内存中(我猜这取决于操作系统),所以两个字符串都应该有两个不同的地址,因为它们存储在内存中的不同地址。
以前,我做过相同类型的示例(一年前),当时的输出是“不相等”。现在,谁能告诉我,这是由于 C 标准的变化,还是我遗漏了什么?
未指定具有相同内容的字符串文字是否具有相同的地址。所以你的程序的输出可能是equal
或者它可能是not equal
,你的编译器碰巧把它们放在同一个地方。
C11 6.4.5 字符串文字
未指定这些数组是否不同,前提是它们的元素具有
适当的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)