首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么strcmp()在输入相等时返回0?

在计算机编程中,strcmp()是一个用于比较两个字符串的函数。当两个字符串相等时,strcmp()返回0。这是因为strcmp()的设计目的是为了方便程序员在比较字符串时进行逻辑判断。

在C语言中,strcmp()函数的定义如下:

代码语言:c
复制
int strcmp(const char *str1, const char *str2);

该函数接受两个参数,分别是要比较的两个字符串。如果两个字符串相等,strcmp()返回0。如果第一个字符串大于第二个字符串,strcmp()返回正数。如果第一个字符串小于第二个字符串,strcmp()返回负数。

在许多编程语言中,都有类似的字符串比较函数,例如Java中的String.compareTo()方法,Python中的str.compare()方法等。这些函数的设计原理都类似,都是为了方便程序员在比较字符串时进行逻辑判断。

总之,strcmp()在输入相等时返回0,是因为它的设计目的是为了方便程序员在比较字符串时进行逻辑判断。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么交叉熵和KL散度作为损失函数是近似相等

来源:DeepHub IMBA本文约900字,建议阅读5分钟本文中,我们将介绍熵、交叉熵和 Kullback-Leibler Divergence [2] 的概念,并了解如何将它们近似为相等。...尽管最初的建议使用 KL 散度,但在构建生成对抗网络 [1] 损失函数中使用交叉熵是一种常见的做法。这常常给该领域的新手造成混乱。...当我们有多个概率分布并且我们想比较它们之间的关系,熵和 KL 散度的概念就会发挥作用。 在这里我们将要验证为什么最小化交叉熵而不是使用 KL 散度会得到相同的输出。...右侧的第二项,即分布 p 的熵可以被认为是一个常数,常数的导数是0,对反向传播不会有影响。因此我们可以得出结论,最小化交叉熵代替 KL 散度会出现相同的输出,因此可以近似相等。...总结 本文中,我们了解了熵、交叉熵和 kl-散度的概念。然后我们回答了为什么这两个术语深度学习应用程序中经常互换使用。我们还在 python 中实现并验证了这些概念。

99440
  • 【C语言编程锦囊·连载49】如何进行字符串的比较?

    strcmp(字符数组名1,字符数组名2) 功能:字符串比较就是将一个字符串与另一个字符串从首字母开始,按照ASCII码的顺序进行逐个比较,直到两个字符串的ASCII顺序不相等或者遇到结束标志“\0结束比较...返回值如下。 q 字符串1=字符串2,返回值为0。 q 字符串1>字符串2,返回值为一正数。...q 字符串1 strcmp()函数字符串比较中,字符串1和字符串2不但可以是字符数组,也可以是字符串常量。...实例中,main函数体中定义4个字符数组,分别用来存储用户名、密码和用户输入的用户名及密码字符串,然后分别调用strcmp函数比较用户输入的用户名和密码是否正确。...strcmp(yhm,yhm1)) /*如果用户名字符串不相等*/ { printf("用户名字符串输入错误!

    1.1K60

    计算机小白的成长历程——分支与循环(6)

    计算元素个数,不管用哪个数组都是可以的; 2.不知道大家有没有注意到我这用a-2来代表数组的最后一个元素的下标,为什么不是a-1?...,而数组名称可以用来表示地址,故输入字符串不需要加入取地址符号&; if (strcmp(a , "123456") == 0)//==不能用来比较两个字符串是否相等,应该使用库函数——strcmp...——字符串比较函数; //用strcmp函数可以用来比较两个字符串的大小,如果第一个字符串与第二个字符串相等,则函数返回0; //如果第一个字符串大于第二个字符串,则返回一个大于0的数值;...,而数组名称可以用来表示地址,故使用scanf函数输入字符串不需要加入取地址符号&; 3.操作符“==”不能用来比较两个字符串是否相等,应该使用库函数——strcmp——字符串比较函数来比较两个字符串的大小...; 4.用strcmp函数来比较两个字符串的大小时分三种情况: (1)如果第一个字符串与第二个字符串相等,则函数返回0; (2)如果第一个字符串大于第二个字符串,则返回一个大于0的数值; (3)如果第一个字符串小于第二个字符串

    15830

    c语言中字符串比较的库函数是什么_c语言比较字符串大小

    运行结果是s1和s2不相等,那为什么是不相等呢,通过右边的观察窗口可以看到,s1和s2是内部的两个存储空间,地址不一样,但是地址中的内容是一样的。...但是这时候”*s1==*s2″依然是相等的,这是为什么呢?通过右侧的观察窗口可以看到,此时*s1和*s2的内容是”a”,而不是整个字符串的内容。...这就要说下一字符串C语言中比较特殊的一点,C语言中处理一般的变量如整形、字符型、浮点型,直接操作的是变量的值,比如 int a,b; a=b;执行这行代码的时候,是将b的值拷贝一份然后复制给a。...通过相等运算符”==”比较,比较的是s3和s4本身的值,s3和s4本身的值是一个地址,这两个地址相同,所以比较结果相等。...该函数返回值如下: 如果返回值小于 0,则表示 str1 小于 str2。 如果返回值大于 0,则表示 str1 大于 str2。 如果返回值等于 0,则表示 str1 等于 str2。

    2K30

    《挑战30天C++入门极限》CC++中字符串常量的不相等性及字符串的Copy

    上面的代码我们测试两个内容为test的字符串常量是否相等,按照常理,应该是相等的,这些一些过程式语言中会得到相等的结论,但在c/c++却不是这样。   ...为什么呢?   ...答案在这里:因为字符串常量存储计算机内存中,两个字符串常量的地址均不相同,所以这样的比较自然就不会得到我们所需要的结果,如果要进行是否相等的比较应该使用strcmp()这个涵数进行比较!...<<"不相等"; } cin.get(); }   strcmp()的函数原形是,int strcmp(const char* str1,const char* str...)   相当将会返回一个等于0的整数,不相等的时候将会返回一个非0整数。

    57120

    if语句使用建议

    strcmp(str1, str2)) { // ... }   因为strcmp返回的是int类型: 如果返回值小于0,则表示str1小于str2。...如果返回值等于0,则表示str1等于str2。如果返回值大于0,则表示str1大于str2。 不要使用双重否定,因为它会让人多做思考,不够直观。比如:   判断两个字符串是否相等,你会发现,增加了!...strcmp(str1, str2)) { // str1,str2字符相等 } 应该这样做: if (strcmp(str1, str2) == 0) { // str1,str2字符相等 }...但君君更喜欢这样写: bool isEqual = strcmp(str1, str2) == 0; if (isEqual) { // str1,str2字符相等 } 别做省略的事,请带上花括号。...明明有时候switch语句更好,为什么我们更愿意使用if代替switch呢?   因为switch使用起来不够稳定,我们常常会忘记添加break中断语句,导致逻辑不正确了。

    34530

    php弱类型初级入门介绍

    0x01 知识介绍 php中有两种比较的符号 == 与 === === 进行比较的时候,会先判断两种字符串的类型是否相等,再比较。...2. "1admin"==1 比较的时候会将1admin转化成数值,结果为1,而“admin1“==1 却等于错误,也就是"admin1"被转化成了0,为什么呢??...> 题目大意是要输入一个字符串和数字类型,并且他们的md5值相等,就可以成功执行下一步语句。 上文提到过,0e比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0。...> strcmp是比较两个字符串,如果str10, 如果两者相等返回0。...我们是不知道$password的值的,题目要求strcmp判断的接受的值和$password必需相等strcmp传入的期望类型是字符串类型,如果传入的是个数组会怎么样呢?

    1.2K90

    在线判题系统(字符串比较)

    之外其余内容都相同,则判题系统返回“Presentation Error”,否则判题系统返回“Wrong Answer”。...给定两个文件,一个代表正确输出,一个代表用户的解题程序的输出,你的任务是计算判题系统应该返回什么信息。 输入 输入包含多组测试实例。第一行输入一个整数T表示测试实例的个数。然后是T组输入。...每组输入有两部分:一个代表正确输出,一个代表用户的解题程序的输出。都以“START”开始,以“END”结束,“START”和“END”之间的是需要判断的数据部分。...Error\n"); else printf("Wrong Answer\n"); } } return 0; } //判断s1和s2是非空白符不相等或空白符不相等 int...} //判断s1和s2是非空白符不相等或空白符不相等 int isquit(char *s1,char*s2){ char str1[N],str2[N]; int i,j; int flag

    20420

    CTF之PHP黑魔法总结

    一、要求变量原值不同但md5或sha1相同的情况下 1.0e开头的全部相等(==判断) 240610708 和 QNKCDZO md5值类型相似,但并不相同,”==”相等操作符的运算下,结果返回了true...php $password=$_GET['password']; if(strcmp('am0s',$password)){ echo 'false!'...二、Strcmp利用数组绕过 查看php的手册 int strcmp ( string $str1 , string $str2 ) Return Values Returns < 0 if str1...当输入的两个值为不是字符串就会产生不预期的返回值: 比如 这样一段代码中,输入password[]=1则返回success,成功绕过验证 三、当有两个is_numeric判断并用and连接,and后面的...true $test=false and true; var_dump($test); //返回true 四、NULL,0,”0″,array()使用==和false比较,都是会返回true的 五、Eregi

    2.7K81

    BuyFlag 1(两种解法)

    比较的时候把值转换成了数字字符串) "=="是PHP弱比较逻辑运算符 PHP弱比较: PHP中的弱比较(Weak comparison)是一种比较两个值是否相等的方法,但它不会对两个值进行严格的全等比较...相反,它允许某些类型的值比较进行自动类型转换。 弱比较使用以下规则: 如果两个值都是布尔值,则它们被认为是相等的,只要它们都是 true 或 false。...输出"flag值" 猜测用到了函数strcmp()用来比较两个字符串,同时还可以比较两个字符串的字符数 strcmp(string1,string2) 0 - 如果两个字符串相等 <0...- 如果 string1 小于 string2 0 - 如果 string1 大于 string2 所以当过滤不当不全,可以通过将参数变为数组的方式进行绕过,这样的话就无法比较,直接返回...if (strcmp($_POST['money'],$flag) == 0)#比较money和flag的值和字符数,"=="PHP弱比较逻辑运算符 echo

    1.2K40

    手把手教你玩转常用字符串函数(包含模拟实现)

    str1对应的字符串大于str2编译器返回大于0的数,等于返回等于0的数,小于返回小于0的数,那么strcmp是通过字符串的哪个特性来比较字符串的大小的呢?...strcmp是通过一对一对的比较字符串上的字符,一旦不相等则根据当前比较结果返回值。...一直相等则比较到'\0'结束,返回0 2.使用strcmp #include #include//strcmp函数位于这个头文件中 int main() { char...,是一对一对字符进行比较然后通过字符的差别返回值,那么我们首先要遍历,通过遍历字符串上的字符内容一直到两个字符不相等返回对应值,一直相等便一直比较到'\0'则返回0 上代码 #include<stdio.h...; //目标字符串首元素的地址每次查找前应重新取出,这样才能查找到对应字符串 while (*ch2 == *ch1)//当此时地址对应的字符相等进入循环 { ch1++;

    11010

    《看聊天记录都学不会C语言?太菜了吧》(10)程序媛聪明绝顶了

    为什么你不早说!——(必懂!题解)求素数 《看聊天记录都学不会C语言?太菜了吧》(21)(必懂!题解冒泡排序)现实生活中,打擂台比赛争名次竟用的是冒泡排序?——(必懂!...小C:对的上面这个代码scanf中使用了两个%s使用了空格隔开,输入值的时候也需要使用空格隔开两个值,这两个值分别存入a和b变量之中,第一个输入的就存入变量a,第二个值就存入变量b之中。...我搜索到strcmp作用就是strcmp函数的圆括号中传入两个内容,分别用逗号进行隔开,如果相等,那么它就会返回一个0,所以只需要判断strcmp是否返回0就可以了。是这样的吧?...小媛:哈哈哈,好的,接下来只需要做一件事,就是上一节说的,我们有两个条件,一个是对比变量a是否跟我们设置的密码相等,还有一个就是判断变量b是否跟我们的变量相等,这样就是两个条件,这两个条件如下: strcmp...if(strcmp(a, "xiaoyuan") == 0 && strcmp(b, "a123456") == 0 ){ printf("密码正确\n"); }else{ printf("密码错误

    31320

    模拟EXCEL排序 c++ sort排序 多重排序 题解

    输入格式: 输入的第一行包含两个正整数NN(\le 10^5≤10​5​​) 和CC,其中NN是纪录的条数,CC是指定排序的列号。之后有 NN行,每行包含一条学生纪录。...输出格式: NN行中输出按要求排序后的结果,即:当C=1C=1,按学号递增排序;当C=2C=2,按姓名的非递减字典序排序;当C=3C=3,按成绩的非递减排序。...当若干学生具有相同姓名或者相同成绩,则按他们的学号递增排序。...(x.name , y.name));//返回值是根据asc码的所以返回值有正负和0,并不是直接返回01作为大小值 if(strcmp(x.name , y.name) > 0 ) return...strcmp 功 能: 串比较   用 法: int strcmp(char *str1, char *str2);   看Asic码,str1>str2,返回值 > 0;两串相等返回0   程序例

    1.2K10

    【C语言】字符函数和字符串函数(1)

    size_t strlen ( const char * str ); strlen的特点: 字符串以 ‘\0’ 作为结束标志,strlen函数返回的是字符串中 ‘\0’ 前⾯出现的字符个数(不包含...很明显不是,因为如果是\0后面,在打印时会提前碰到目标字符串的\0,结束打印,而不会打印后面追加的内容 (3)所以可以得出,追加,strcat会从目标字符串的\0处开始追加,会覆盖目标字符串的\0...原型解析:strcmp的两个参数分别是两个字符串的首字符地址,如果前一个字符串大于后一个字符串,返回一个大于0的数,如果相等返回0,如果小于就返回一个小于0的数    接着我们来看看strcmp的特点...,然后对str1和str2进行++操作 (3)要注意的一点是,有可能它们两个字符串完全相等,我们可以判断一下 *str1是否是\0,由于它们解引用后相等才会进入循环,所以此时 *str2也是\0,此时就说明两个字符串完全相等...,直接返回0 (4)如果出了循环,说明它们当前指向的字符不相同,所以此时我们直接返回它们的差值即可,如果前一个字符更大,差值就自然大于0,符合函数的情况,后一个字符大也同理,这样我们就实现了我们的strcmp

    7810
    领券