strcmp返回值布尔类型的判断
strcmp: 用于比较两个字符串,原型如下:
如果s1小于s2,strcmp函数返回一个小于零的值。如果s1大于s2,函数返回一个大于零的值。如果两个字符串相等,函数就返回零。
警告:初学者常常会编写下面这样的表达式
if ( strcmp (a, b))
他以为如果两个字符串相等,它的结果将是真。但是,这个结果将正好相反,因为在两个字符串相等的情况下返回值是零(假)。 把这个返回值当作布尔值进行测试是一种坏风格,因为它具有三个截然不同的结果:小于、等于和大于。 所以更好的方法是把这个返回值与零进行比较。
当然我们在实际工作中也经常会碰到将其返回值与布尔值进行判断,我们来看下面这个例子:
char a[];
……
if ( !strcmp( a, "5"))
{ printf(“equally!”);
}else{
printf("unequal!");
}
在这个例子中我们分析下:
如果a的值为5,则返回值为0,那么判断也就成为 if(!(0)) ,(0)取反后为1 ,1位TRUE则判断为 if( TRUE )
如果a的值小于5,则返回一个负数,而负数的取反是FALSE; 大于5,则返回一个正数,正数的取反也是FALSE;
因此上例中a 的值为5 则输出 equally ; 不等于5都输出 unequal
我们可以做一个小测试 -1 、 0 、 1三数分别取反,会得到 0、1、0 。
标准并没有规定用于提示不相等的具体值。它只是说如果第一个字符串大于第二个字符串就返回一个大于零的值,如果第一个字符串小于第二个字符串就返回一个小于零的值。一个常见的错误是一位返回值就是1和-1,分别代表大于和小于。这个假设并不总是成立。 (跟具体的编译器有关)
转自:http://piao8163.blog.163.com/blog/static/96972478200981343957704/
strcmp返回值布尔类型的判断的更多相关文章
- Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现.如 ...
- 方法的重写与重载的区别(Override与Overload)。重载的方法是否可以改变返回值的类型
方法的重写(Override)与重载(Overload)的区别.重载的方法是否可以改变返回值的类型?[基础] 解释: 方法的重写overriding和重载Overloading是Java多态性的不同表 ...
- malloc 返回值的类型是 void *
malloc 返回值的类型是 void *,所以在调用 malloc 时要显式地进行类型转换,将 void * 转换成所需要的指针类型. #include <iostream> using ...
- Overloaded的方法是否可以改变返回值的类型
摘要: 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同) Overload是重载的意思,Override是覆盖的意思,也就是重写. 重载 ...
- Override和Overload差别,Overloaded的方法能否够改变返回值的类型?
Overload是重载的意思, Override是覆盖的意思,也就是重写. 重载Overload表示同一个类中能够有多个名称同样的方法,但这些方法的參数列表各不同样(即參数个数或类型不同). 重写Ov ...
- Overload重載和Override重写的区别。Overloaded的方法是否可以改变返回值的类型?
Overload是重载的意思,Override是覆盖的意思,也就是重写. 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同). 重写Ove ...
- java matlab混合编程之返回值Struct类型
java matlab混合编程的时候当返回值是Struct类型(matlab中的返回类型)如何来取得(java中)其值? 上网找,看到这个网页:http://www.mathworks.cn/cn/h ...
- 转:环绕通知返回值 object 类型
遇到 AOP 环绕通知报错 “return value from advice does not match primitive return type for: public boolean” 百 ...
- JS基础_返回值的类型
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
随机推荐
- 1115 Counting Nodes in a BST
题意:给出一棵二叉搜索树的插入序列,要求该树最后两层的结点个数. 思路:在树结点中增加一个数据域layer,表示该结点所在的层次.另外,设置数组level[]和变量maxLevel,level[i]表 ...
- PHP获取路径
//获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br>"; #jiqing.nikon.com echo 'http://'.$_SE ...
- PHP定时任务Crontab结合CLI模式详解
从版本 4.3.0 开始,PHP 提供了一种新类型的 CLI SAPI(Server Application Programming Interface,服务端应用编程端口)支持,名为 CLI,意为 ...
- python's twenty-first day for me 抽象类和接口类以及多态
归一化设计: 不管是哪一个类的对象,都调用同一个函数去完成相似的功能. class Alipay: def pay(self,money): print('使用支付宝支付了%s' % money) c ...
- js操作history
js操作history pushState pushState只会在当前history中添加一条记录,并不会刷新浏览器 history.pushState({}, "my title&quo ...
- 微信小程序之 wx.getUserInfo引导用户授权问题
首先,在page外定义一个函数用户判断是否为空对象 var isEmptyObject = function (e) { var temp; for (temp in e) ; } 然后,在page中 ...
- 简单的方法实现仿微信底部的Tab选项卡界面
在网上看了比较多的关于Tab的教程,发现都很杂乱.比较多的用法是用TitlePagerTabStrip和ViewPaper.不过TitlePagerTabStrip有个很大的缺陷,Tab里面的内容刚进 ...
- 微信小程序中遇到的wx:if问题
最近在项目中遇到wx:if问题进行梳理一下,有个需求就是有数据的时候显示数据列表,没有数据的时候就显示‘去赚钱’的页面,这可以放在一个页面进行显示,就要用到wx:if判断.我在js中设置了一个变量sh ...
- Idea的基本介绍
Idea的基本介绍 Idea一般是作为一个Java和Scala的开发工具来使用的,它的使用方法和Eclipse有一些不同,这里记录以下一些基本点. 1.创建项目 创建一个新项目的时候,用户必须选择一个 ...
- 25-从零玩转JavaWeb-抽象类
一.抽象类解决什么问题 求三角形,圆,矩形的面积 发现三个类都有共同的方法 ,所以我们可以抽出一个父类, 把他们相同的方法放到父类当中 二.什么是抽象方法 三.什么是抽象类 四.抽象类的特 ...