说到字符串文字,C99 标准规定 (6.4.5.6):
如果这些数组的元素具有适当的值,则未指定这些数组是否不同。如果程序尝试修改这样的数组,则行为是未定义的。
我找不到类似的警告或对 const 变量的明确保证。可以表达一下&x == &y
在上下文中const int x=12; const int y=12;
评估为1
? const 变量和字符串文字怎么样(即&x == "\014\000\000"
保证是0
即使在 32 位小端平台上)?
对于它的价值,“字符串文字”部分这篇博文 http://blog.frama-c.com/index.php?post/2011/06/04/Valid-compare-pointers给出问题的背景。
据我所知,标准不允许任何类型的两个命名对象具有相同的地址(联合成员除外)。从 6.5.9/6 开始:
两个指针比较相等当且仅
如果两者都是空指针,则两者都是
指向同一个对象的指针...
字符串文字不是 const 变量,因此您的第二个问题没有实际意义,而且我不明白 32 位和字节序与它有什么关系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)