C等于常量字符串

use*_*882 1 c

以下比较是否保证是真的

"hello world"=="hello world";
Run Code Online (Sandbox Code Playgroud)

此外,以下始终保证是假的吗?

char a[] = "hello world";
a == "hello world";
Run Code Online (Sandbox Code Playgroud)

Mic*_*urr 8

要清楚 - 在两种情况下,您都在比较指针,而不是实际的字符串内容.

对于

"hello world"=="hello world";
Run Code Online (Sandbox Code Playgroud)

允许比较是truefalse.C标准在6.4.5"字符串文字"中说:

如果这些数组的元素具有适当的值,则这些数组是否不同是未指定的.

因此,该标准允许文字的存储相同或不同.

对于

char a[] = "hello world";
a == "hello world";
Run Code Online (Sandbox Code Playgroud)

比较将永远是false因为数组的地址a必须不同于字符串文字的地址.