条件操作符
条件操作符也叫三目操作符,需要接受三个操作数的,形式如下:
exp1 ? exp2 : exp3
条件操作符的计算逻辑是:如果
exp1
为真,
exp2
计算,计算的结果是整个表达式的结果;如果
exp1
为假,
exp3
计算,计算的结果是整个表达式的结果。
练习1:使用条件操作符表示下面代码的逻辑
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d", &a);
if (a > 5)
b = 3;
else
b = -3;
printf("%d\n", b);
return 0;
}
//改造之后
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d", &a);
b = a > 5 ? 3 : -3;
printf("%d\n", b);
return 0;
}
练习2:使用条件表达式实现找两个数中较大值。
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int m = (a > b ? a : b);//三目运算符
printf("m = %d\n", m);
return 0;
}
逻辑操作符
! : 逻辑取反运算符(改变单个表达式的真假)
&& : 逻辑与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)
|| : 逻辑或运算符,就是或者的意思(两侧至少有一个表达式为真,则为真,否则为假)
注:C语言中,非0表示真,0表示假
1.逻辑取反运算符
a | !a |
非0 | 0 |
0 | 1 |
比如,我们有⼀个变量叫
flag
,如果flag为假,要做⼀个什么事情,就可以这样写代码:
int main()
{
int flag = 5;
scanf("%d", &flag);//0
if (!flag)//flag为假要做什么事
{
printf("hehe\n");
}
return 0;
}
如果
flag
为真,
!flag
就是假,如果
flag
为假,
!flag
就是真
2.逻辑与运算符
&&
就是与运算符,也是并且的意思,
&&
是⼀个双目操作符,使用的方式是
a&&b
,
&&
两边的表达式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。
a | b | a&&b |
非0 | 非0 | 1 |
非0 | 0 | 0 |
0 | 非0 | 0 |
0 | 0 | 0 |
比如:如果说月份3月到5月,是春天,那么使用代码是怎么体现的呢
int main()
{
int month = 0;
scanf("%d", &month);
if (month >= 3 && month <= 5);
{
printf("春季\n");
}
return 0;
}
这里表达的意思就是month既要大于等于3,又要小于等于5
3.逻辑或运算符
a | b | a||b |
非0 | 非0 | 1 |
非0 | 0 | 1 |
0 | 非0 | 1 |
0 | 0 | 0 |
||
就是或运算符,也就是或者的意思,
||
也是⼀
个双目操作符,使用的方式是
a || b
,
||
两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。
比如:
说⼀年中月份是12月或者1月或者2月是冬天,那么我们怎么使用代码体现呢
int main()
{
int month = 0;
scanf("%d", &month);
if (month == 12 || month == 1 || month == 2)
{
printf("冬季\n");
}
return 0;
}
最后,练习:输入⼀个年份year,判断year是否是闰年