对于字符串比较的讨论
今天在写代码时(注是c语言,不是c++),一不小心用了“==”对比较字符串,花了1个多小时才发现这个错误,详见下面code:
虽然用“argv[1] == argv[2]”这种表达是不对的,但为什么c编译器没有报错,而且得出的值为0,这一点让我很奇怪,有没有高手解释下
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
...
if(argv[1] == argv[2])
{
fprintf(stderr, "%s and %s are same", argv[1], argv[2]);
exit(1);
}
....
}
虽然用“argv[1] == argv[2]”这种表达是不对的,但为什么c编译器没有报错,而且得出的值为0,这一点让我很奇怪,有没有高手解释下
...全文
相关推荐
字符串比较
java比较两个字符串差异并标记出来,以html形式展现。
用PHP中的 == 运算符进行字符串比较
最近在Greg Beaver’s的blog上发表的一篇新文章 comparing strings in PHP with the == operator 中提及了PHP的 == 运算符在对字符串进行比较时值得注意的问题。 在某些情况下,PHP会把类数值数据(如含有数字的字符串等)转换成数值处理,== 运算符就是其中之一。在使用 == 运算符对两个字符串进行松散比较时,PHP会把类数值的字符串转换为数值进行比较,下面的实验证实了这个结论:<?phpvar_dump(’01’ == 1);?>以上代码输出结果为:bool(true) 所以,在使用对字符串进行比较时,建议使用 === 运算符对字
比较s和t两个字符串
p79_2ti 设计strcmp(s,t)算法,实现两个字符串的比较
javascript 两个字符串比较函数
比较两个字符串中不同的字符
C&C++字符串比较避坑[源码]
文章讨论了在C++中使用==运算符比较字符串时可能遇到的问题。当比较字符串字面量和const char*时,==实际上比较的是两个指针的地址,而非字符串内容,这会导致预期外的行为。作者通过一个具体例子展示了这一问题,并提供了两种解决方案:使用std::string类的==运算符重载,或者使用strcmp函数进行字符串内容比较。文章还引用了StackOverflow上的相关讨论作为参考,帮助读者更好地理解问题的根源和解决方法。


