以下比较是否保证是真的?
"hello world"=="hello world";
此外,以下始终保证是假的吗?
char a[] = "hello world"; a == "hello world";
Michael Burr.. 8
要清楚 - 在两种情况下,您都在比较指针,而不是实际的字符串内容.
对于
"hello world"=="hello world";
允许比较是true
或false
.C标准在6.4.5"字符串文字"中说:
如果这些数组的元素具有适当的值,则这些数组是否不同是未指定的.
因此,该标准允许文字的存储相同或不同.
对于
char a[] = "hello world"; a == "hello world";
比较将永远是false
因为数组的地址a
必须不同于字符串文字的地址.
要清楚 - 在两种情况下,您都在比较指针,而不是实际的字符串内容.
对于
"hello world"=="hello world";
允许比较是true
或false
.C标准在6.4.5"字符串文字"中说:
如果这些数组的元素具有适当的值,则这些数组是否不同是未指定的.
因此,该标准允许文字的存储相同或不同.
对于
char a[] = "hello world"; a == "hello world";
比较将永远是false
因为数组的地址a
必须不同于字符串文字的地址.