void main() {
if("a" == "a")
printf("Yes, equal");
else
printf("No, not equal");
}
为什么输出是No, not equal
?
void main() {
if("a" == "a")
printf("Yes, equal");
else
printf("No, not equal");
}
为什么输出是No, not equal
?
您要比较的是存储在不同位置的不同字符串的两个内存地址.这样做基本上是这样的:
if(0x00403064 == 0x002D316A) // Two memory locations
{
printf("Yes, equal");
}
使用以下代码比较两个字符串值:
#include <string.h>
...
if(strcmp("a", "a") == 0)
{
// Equal
}
此外,"a" == "a"
可能确实会返回true,这取决于编译器,编译器可能会在编译时将相等的字符串合并为一个,以节省空间.
当您比较两个字符值(它们不是指针)时,这是一个数值比较.例如:
'a' == 'a' // always true