各位少年:
前言
还记得我们上一章讲过一个比较抽象的代码,它要比较两次都是真的情况下才能打印,那么很显然这样写代码是有弊端的?哪我们C语言之父丹尼斯.里奇,先介绍一下上次拉掉了if语句的好习惯
好再分享一些操作符
C语言用于比较表达式,称为关系表达式,里面使用的运算符就称为关系运算符,主要有下面6个
<大于运算符 >小于运算符 >=大于等于运算符 <=小于等于运算符 ==相等运算符 !=不相等运算符
代码示例
int main() { int a=3; if(5=a)//赋值 printf("hehe\n"); return 0; }
很明显这个if语句的表达式出错了,我们想比较结果我们写成了赋值,很显然结果只要是非零,都会打印,
所以为了避免这样的错误很多老C/C++程序员,都把常量放在前面看代码例子。
#include<stdio.h> int main() { int a=3; if(5==a) printf("hehe\n"); return 0; }
建议这样写减少报错的可能,因为常量没办法改变,这样写如果只写一个等号,就会报错 这样就不会出现
第一个代码图的情况了。
面试官也会认同你这种写法的,虚伪大家能能融会贯通,希望对大家有所帮助。
好,我们再来分享个代码,多个关系运算符不宜连用。
i<j<k
上面示例中,连续使用两个小于运算符。这是合法表达式,不会报错,但是通常达不到想要的结果,即不是
保证变量j的值在i和k之间。因此关系运算符是从左到右计算,所以实际执行的是下面的表达式。
(i<j)<k
上面式子中,i<j返回0和1,所以最终是0和1与变量k进行比较。 如果想要判断变量j的值是否在i和k之间,
应该用下面的写法 。
if(x<y&&y<x)//&&并且
这个表达式的结果必须两边必须都是真
条件操作符
exp1?exp2;exp3
表达式1
真 表达式2计算,表达式3不计算,表达式2的结果是整个表达式的结果 假 表达式2不计算,表达式3计算,表达式3的结果 是整个表达式的结果
好我们看两端代码
if (a > 5) b = 3; else b = -3;
这里是不是就很复杂了 大家想到用三目操作符,好我们来给三目操作符的写法,分享给大家
#include<stdio.h> int main() { int a = 0; int b = 0; scanf("%d", &a); b = (a > 5 ? 3 : 3); printf("%d", b); return 0; }
逻辑运算 符提供逻辑判断功能,由于构建更复杂的表达式,主要看下面三个运算符 。
| :逻辑取反运算符(改变单个表达式的真假)
&& :与运算符,就是并且的意思(两边都为真,只要一边为假,就不会执行)
||或运算符,就是或者的意思(两侧至少有一个表达式真,则为真,负则为假)
C语言中非0表示真 0表示假
逻辑取反运算符
a=!a 非0取反后是0 0 1
我来分享个代码示例,用与运算符和或运算符,来判断闰年,我们都知道闰年的判断方式,我们数学课本中对闰年判断能不能被四整除,但其实还有几个点能被四整除的时,不能被100整除,或者能被四百整除,好大家知道了,我们上代码,希望对大家有所帮助。
#include<stdio.h> int main() { int year = 0; scanf("%d", &year); if (((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))) { printf("是闰年\n"); } else { printf("不是闰年\n"); } return 0; }
好大家能理解上面的代码的话,我们再来介绍个东西,叫做短路。