繁体   English   中英

比较 C 中的文字空字符串

[英]Comparing literal empty strings in C

在 C 中,以下指定做什么?

if ("" == "")
{
    printf("Empty strings are equal\n");
}

我手头有一个编译器,它告诉我""确实等于"" 但这种平等是否得到保证?

编辑:我非常了解指针比较和字符串比较在 C 中的工作原理。 我要问的是在 C 标准中为编译时常量空字符串指定了哪些行为(如果有)。 我的信念是字符串不能保证相等,但实际上通常是相等的,因为所有 const 空字符串都将被保存到同一个地址。 但我想知道是否有人可以提供明确的参考

C 标准说 (6.4.5/6)

未指定 [字符串文字] 是否不同

保证? 我对此表示怀疑。 您不是在比较字符串的内容,而是比较它们的地址,这意味着您依赖编译器不会发出两个恰好在同一位置具有相同内容的文字字符串。 它可能会起作用,但不是您应该依赖的东西(也不清楚它有什么用处)。

编辑:另见为什么“a”?= C中的“a”? - 它对基本相同的问题有近一百个赞成票的答案(并且是由编译器不同的用户编写的)。

我认为不能保证它们具有相同的地址——我怀疑标准会要求这种行为。 为什么你需要依赖于这个是可预测的?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM