如果我把上节的例题修改一下:如果你的会员卡号是62开头的那你的卡是金卡可以享受9折优惠
这样的话那我们的if语的条件里应该有两个关系运算
1:会员卡第一位是6 v1=='6'
2:会员卡第二为是2 v2=='2'
if语句里的条件应是这两个关系运算的结果都是1,那放在if的小括号里应该怎么写条件呢,这就需要我们学习逻辑运算符,逻辑运算符的运算结果为真或者假,逻辑运算符介绍如下
在看下面的例子之前我希望你记住我之前说的,c语言里默认1为真0为假,非0的数据也被看成真。
&&(shif+7能够打出这个符号) 与运算符
表达式1&&表达式2 两个表达式的结果都为真时,与运算的结果才为真,否则为假。 比如
一个公司的招聘条件是会c语言并且人品好,这就是一个与运算,两个条件只要有一个
不成立就不符合要求,必须同时成立才符合要求。
真&&真 结果肯定为 1 因为两边都是真
(5>3)&&(7<10) 5>3运算结果为1,7<10结果为1,这样就变成了 真&&真 结果为1
5&&(10<9) 10>9运算结果为1,这样就变成了真&&真结果为1
假&&真 结果为0 因为两边有一个为假则最后结果肯定是假
(9<2)&&(1==1) 9<2运算结果为0,1==1运算结果为1, 这样就变成了假&&真 结果为0
假&&假 结果为0 我就不举例说明了
||(shift+回车上面的斜杠能够打出这个符号,你需要连续打两个) 或运算符
表达式1&&表达式2 两个表达式的结果只要有一个为真,或运算的结果就为真,只有两
个表达式的结果都为假时或运算的结果才为假。比如一个公司的招聘条件是会c语言或者会
平面设计,这就是一个或运算,满足任何一个条件就行,会c语言可以当程序员会平面设计
可以当设计师,只要满足一个条件结果就成立,两个条件都不满足时结果才不成立。
真||假 结果为 1 因为左边满足
(5>3)||(5==4) 5>3运算结果为1,5==4运算结果为0,这样就变成了真||假 结果为 1
假||假 结果为0
假||真 结果为1
真||真 结果为1
! 非运算符
!(表达式1) 表达式1为真时 非运算的结果为假,表达式1为假时非运算的结果为真,非运算
的结果跟表达式的结果是相反的。比如你去我就不去,你不去我就去,这就是一个非运算,
在去与不去的问题上我和你总是相反的。
!0 结果为1
!1 结果为0
那我们开头提出的问题“会员卡号是62开头的”应该用哪个运算符呢?
应该这样写 if( (v1=='6')&&(v2=='2') ) 你答对了吗
之前我举例子时,逻辑运算的两边的表达式我都加上了括号,是为了让你看的明白,那不加括号会变成什么样呢,你比如
1>2&&1 应该先算1>2还是应该先算2&&1呢? 这样我们上节总结的优先级就又添加了一种运算符,优先级由高到低列出如下:
逻辑非运算
算数运算
关系运算
逻辑与运算
逻辑或运算
赋值运算
你还应该记住一句话,从左向右算,有括号先算括号里的
例如 a=!3+3>5||1&&7<6
应是 先算!2 得出0 变成 a=0+3>5||1&&7<6
再算0+3得出3 变成 a=3>5||1&&7<6
再算3>5得出0 变成 a=0||1&&7<6
再算7<6得出0 变成 a=0||1&&0
再算1&&0得出0 变成 a=0||0
再算0||0得出0 变成 a=0
最后a=0 完成了把0赋值给a 然后整个表达式的值变成了a变量里的值0,所以你把这个表达式用%d输出会输出0,当然你不要忘了定义a变量
所以我们那个卡号的条件可以省去两对括号:if(v1=='6'&&v2=='2' )