为什么C ==对于相等的字符串返回true?(Why does C == return true for equal strings?)

编程入门 行业动态 更新时间:2024-10-27 03:28:45
为什么C ==对于相等的字符串返回true?(Why does C == return true for equal strings?) if( "string1" == "string2" )

为什么这在C中有效? 当字符串相等时它返回true? 怎么样? 例如,它在Java中不起作用,因为指针被比较。

if( "string1" == "string2" )

Why does this work in C? It returns true when strings are equal? How? For example, it doesn't work in Java because the pointers are compared.

最满意答案

我认为使用'if(“string1”==“string2”)比较字符串是比较C中字符串文字的指针。您可以参考以下帖子: - C字符串 - 使用等式运算符==用于比较两个字符串平等

int main() { if( "string1" == "string1" ) { printf("Strings are equal\n"); } else { printf("Strings are not equal\n"); } if( "string1" == "string2" ) { printf("Strings are equal\n"); } else { printf("Strings are not equal\n"); } char* s1 = "string1"; char* s2 = "string2"; printf("%s = %p %s = %p\n", s1, s1, s2, s2); return(0); }

上述主要功能中有两个if块。 其中一个如果将“string1”与其自身进行比较将导致TRUE。 第二个是比较“string1”和“string2”,这将导致FALSE。 如果您指定字符串文字的指针并打印它们的地址,您将能够看到为什么在第一个if块中获得TRUE值,在第二个if块中获得FALSE值。 以下是输出: -

GAGUPTA2-M-40UT:Desktop gagupta2$ ./a.out Strings are equal Strings are not equal string1 = 0x105f6ef50 string2 = 0x105f6ef82

I think comparing string using 'if( "string1" == "string2" )' is comparing pointers to string literals in C. You could refer to the following post:- C String -- Using Equality Operator == for comparing two strings for equality

int main() { if( "string1" == "string1" ) { printf("Strings are equal\n"); } else { printf("Strings are not equal\n"); } if( "string1" == "string2" ) { printf("Strings are equal\n"); } else { printf("Strings are not equal\n"); } char* s1 = "string1"; char* s2 = "string2"; printf("%s = %p %s = %p\n", s1, s1, s2, s2); return(0); }

There are two if blocks in the above main function. One of them if comparing "string1" with itself which will result in TRUE. The second is comparing "string1" and "string2" which will result in FALSE. If you assign pointers to the string literals and print their addresses you will be able to see why in the first if block you get TRUE value and in the second if block you get the FALSE value. Following is the output:-

GAGUPTA2-M-40UT:Desktop gagupta2$ ./a.out Strings are equal Strings are not equal string1 = 0x105f6ef50 string2 = 0x105f6ef82

更多推荐

本文发布于:2023-07-15 22:05:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1119389.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   true   return   equal   strings

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!