分支和循环——操作符

2.关系操作符

C 语⾔⽤于比较的表达式,称为 “关系表达式”(relational expression),⾥⾯使⽤的运算符就称 为“关系运算符”(relational operator),主要有下面6个。

• > ⼤于运算符

 • < ⼩于运算符

• >= ⼤于等于运算符

• <= ⼩于等于运算符

• == 相等运算符

!= 不相等运算符

例:

a == b;
a != b;
a < b;
a > b;
a <= b;
a >= b;

表达式通常返回0或1来表示真假,通常用与while或if结构。

注:相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符

为了防⽌出现这种错误,可以将变量写在等号的右边,即:if (3==x)

这样写如果把==误写成=编辑器就会报错

另外需要注意的是:多个关系运算符不宜连⽤。因为关系运算符是从左到右计算,如使用i<j<k比较三者大小则无法实现,实际执行的是(i<j)<k,, i < j 返回 0 或 1 ,所以最终是 0或 1与变量 k 进⾏⽐较。如果想要判断变量 j 的值是否在 i和  k之间,应该写为1 i < j && j < k

实例:输入一个年龄,如果在18-28,则输出“青年”:

#include <stdio.h>
int main()
{
 int age = 0;
 scanf("%d", &age);
 if(18<=age<=28)
 {
 printf("⻘年\n");
 }
 return 0;
}

当我们输入小于18的一个数(10)时,会发现输出仍为青年,这是因为,我们先拿18和age中存放的10⽐较,表达式18<=10为假, 18<=age 的结果是0,再拿0和 28⽐较,0<=28为真,所以打印了⻘年 ,所以即使当age是10的时候,也能打印⻘年,逻辑上是有问题,代码正确的书写为:

#include <stdio.h>
int main()
{
 int age = 0;
 scanf("%d", &age);
 if(age>=18 && age<=36)
 {
 printf("⻘年\n");
 }
 return 0;
}

3.逻辑操作符————&& , || , !

逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要有下⾯三个运算符。

• ! :逻辑取反运算符(改变单个表达式的真假)。

• && :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。

• || :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。

3.1逻辑取反运算符

例子:如果 一个变量flag 为真, !flag 就是假,如果 flag 为假, !flag 就是真。

3.2与运算符

&& 就是与运算符,也是并且的意思, && 是⼀个双⽬操作符,使⽤的⽅式是 a&&b , && 两边的表达 式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。

3.3或运算符

|| 就是或运算符,也就是或者的意思, || 也是⼀个双⽬操作符,使⽤的⽅式是 a || b , || 两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。

3.4练习:闰年的判断

输⼊⼀个年份year,判断year是否是闰年

闰年判断的规则:

1. 能被4整除并且不能被100整除是闰年

2. 能被400整除是闰年

#include <stdio.h>
//代码1
int main()
{
 int year = 0;
 scanf("%d", &year);
 if(year%4==0 && year%100!=0)
 printf("是闰年\n");
 else if(year%400==0)
 printf("是闰年\n");
 
 return 0;
}
//代码2
int main()
{
 int year = 0;
 scanf("%d", &year);
 if((year%4==0 && year%100!=0) || (year%400==0))
 printf("是闰年\n");
 return 0;
}

3.5短路

C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是 保证的。如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。

如if(month >= 2 && month <= 8)当左侧表达式结果为0是跳过右侧表达式,不再求值

仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进⾏计算的运算称为短 路求值。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值