gpt4 book ai didi

c - 为什么 "a"!= "a"在 C 中?

转载 作者:太空狗 更新时间:2023-10-29 16:14:42 26 4
gpt4 key购买 nike

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

关于c - 为什么 "a"!= "a"在 C 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4843640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com