1.关系操作符
C语言用于比较的表达式,成为“关系表达式”(relational expression),里面使用的运算符就成为“关系运算符”(relational operator),主要有以下6个:
- > 大于运算符
- < 小于运算符
- >= 大于等于运算符
- <= 小于等于运算符
- == 相等运算符
- != 不相等运算符
例子:
a > b;
a < b;
a >= b;
a <= b;
a == b;
a != b;
C语言中,关系表达式通常返回 0 或 1,返回 0 表示假,所有非 0 值表示真。如:23 > 2 返回 1 ,12 > 20 返回 0。
关系表达式通常用于 if 或 while 结构,如:
if (a == 5)
{
printf("hehe\n");
}
while (n > 0)
{
printf("hehe\n");
}
这里要注意:相等运算符 == 与赋值运算符 = 是两个不一样的运算符,不可以混淆!
有时我们可能会写出下面这样的代码,下面示例中,原本是 x == 3,但是不小心写成 x = 3, 这个式子就会表示变量 x 赋值为 3,它的返回值是 3,所以 if 判断总是为真。
if (x = 3)……
除此之外,还有另一个易错的点是:多个关系运算符不宜连用。
i < j < k
上面示例中,连续使用两个小于运算符,这是合法表达式,不会报错,但通常达不到想要的结果。因为关系运算符是从左到右算的,所以实际执行的是下面的表达式:
(i < j) < k
i < j 返回 0 或 1,所以最终是 0 或 1 与变量 k 进行比较。如果想要判断 j 的值是否在 i 和 k 之间,因该使用下面这种写法:
i < j && j < k
举个例子:
输入一个年龄,如果年龄在45岁~59岁之间,我们输出中年
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 45 && age <= 59)
printf("中年\n");
return 0;
}
2.逻辑操作符
逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符:
- 逻辑取反运算符(!):改变单个表达式的真假。
- 逻辑与运算符(&&) :就是并且的意思,两侧的表达式都为真,则为真,否则为假。
- 逻辑或运算符(||):就是或者的意思,两侧至少有一个表达式为真,则为真,否则为假。
2.1 逻辑取反运算符
举个例子:假如我们有一个变量叫 flag,如果 flag 为假,我们就做一件事情。
#include <stdio.h>
int main()
{
int flag = 0;
if (!flag)
{
printf("hehe\n");
}
return 0;
}
如果 flag 为真,!flag 就为假,如果 flag 为假,!flag 就为真。所以上述代码的意思就是 flag 为假,执行 if 语句中的代码。
2.2 逻辑与运算符
&& 就是或运算符,也就是或者的意思,&& 也是一个双目操作符,使用的方法是 a && b,&& 两边的表达式都是真的时候,整个表达式才为真,只要有一个表达式为假,则整个表达式为假。
例如:我们想要表达6月到8月是夏天,该怎么用代码体现呢 ?_?
#include <stdio.h>
int main()
{
int month = 0;
scanf("%d", &month);
if (month >= 6 && month <= 8)
{
printf("夏季\n");
}
return 0;
}
想要表达6月到8月是夏天的话,month既要大于等于6,又要小于等于8,两个条件必须同时满足。
2.3 逻辑或运算符
|| 就是或运算符,也就是或者的意思,|| 也是一个双目操作符,使用的方法是 a || b,|| 两边的表达式只要有一个为真,整个表达式就为真,两边的表达式都为假的时候,才为假。
打个比方:一年中的3月或4月或5月是春天,我们该如何使用代码来体现呢~_~
#include <stdio.h>
int main()
{
int month = 0;
scanf("%d", &month);
if(month==3 || month==4 || month==5)
{
printf("春季\n");
}
return 0;
}
3.条件操作符
条件操作符又叫三目操作符,需要接受三个操作数,形式如下:
exp1 ? exp2 : exp3
条件操作符的计算逻辑是:如果 exp1 为真,exp2 计算,计算的结果是整个表达式的结果;如果 exp1 为假,exp3 计算,计算的结果是整个表达式的结果。
逻辑对比:
使用 if 语句表达:
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d", &a);
if (a > 5)
b = 3;
else
b = -3;
return 0;
}
使用条件操作符表达:
int main()
{
int a = 0;
int b = 0;
scanf("%d", &a);
b = (a > 5 ? 3 : -3);
return 0;
}