目录
1、关系运算符介绍
2、应用示例
3、逻辑运算符介绍
4、逻辑表达式的书写
5、不得不说的逻辑非
1、关系运算符介绍
关系运算(Relational Operators),用于判断条件,决定程序的流程。
关系 | 数学中的表示 | C语言的表示 |
---|---|---|
小于 | < | < |
小于等于 | ≤ | <= |
大于 | > | > |
大于等于 | ≥ | >= |
等于 | = | == |
不等于 | ≠ | != |
C语言的基本数据类型有char、int、double,我们暂时认为只有char和int适用于上述关系运算符,double和字符串(字符数组)的关系运算以后再讨论。
注意了:
1)“=”是赋值,“==”才是判断两个数是否相等,不能混用。
2)C语言没有“之间”、“中间”、“之内”或“在某范围内”的关系运算符,例如年龄在25-30岁之间,只能表达为:年龄大于等于25岁
并且 年龄小于等于30岁。
2、应用示例
在现实世界中,不是全部的事情都按顺序进行的,需要根据客观条件做出判断和选择,例如超女选秀,限制了16岁才能参加,16岁以下是不能参加的。这时候程序就需要做出判断,判断报名者的年龄是否满16岁,并给出提示。
在C语言中,使用if和else关键字对条件进行判断,先看下面的代码。
示例(book20.c)
/*
* 程序名:book20.c,此程序演示关系运算符用于条件判断。
* 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
int main()
{
int age=0; // 定义一个整数变量age,存放用户输入的年龄
printf("请输入您的年龄:"); // 提示用户输入
scanf("%d",&age); // 接受从键盘输入的年龄数据
if (age >= 16)
{
// 如果用户已满16岁,执行这段代码
printf("亲,您已成年,可以报名超女选秀,祝您好运!\n");
}
else
{
// 如果用户小于16岁,执行这段代码
printf("这位童鞋,不好意思哦,等您16岁之后再来吧!\n");
}
}
运行效果
以上代码中,age>=16是需要判断的条件,>=表示“大于等于”,等价于数学中的≥。
3、逻辑运算符介绍
在日常生活中,要做出某个决定,需要判断的条件往往不止一个,需要判断多个条件,例如超女选秀,参与选秀的女孩子有以下基本数据:
年龄:取值16-50岁。
身高:取值150cm-190cm。
身材:1-火辣;2-普通;3-飞机场。
颜值:1-漂亮;2-一般;3-歪瓜裂枣。
女神标准是:1)年龄25-30岁;2)身高165cm-175cm;3)身材火辣;4)颜值漂亮或一般(可以整容)。
大脑中的逻辑是这样的:年龄25-30岁 并且 身高165cm-175cm 并且 身材火辣并且(颜值漂亮 或者 颜值一般)。
用C程序来表达大概如下:
if ( (年龄 >= 25) 并且 (年龄 <= 30) )
{
if ( (身高 >= 165) 并且 (身高 <= 175) )
{
if (身材 == 火辣)
{
if ( (颜值 == 漂亮) 或者 (颜值 == 一般) )
{
printf("超女选秀合格,送往后宫。\n");
}
}
}
}
示例(book25.c)
/*
* 程序名:book25.c,此程序演示在if中使用逻辑运算符。
* 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
int main()
{
int age=0; // 年龄
int height=0; // 身高,单位:厘米cm
int sc=0; // 身材,1-火辣;2-普通;3-飞机场。
int yz=0; // 颜值,1-漂亮;2-一般;3-歪瓜裂枣。
printf("请输入年龄、身高、身材(1-火辣;2-普通;3-飞机场):");
scanf("%d %d %d",&age,&height,&sc);
printf("请输入颜值(1-漂亮;2-一般;3-歪瓜裂枣):");
scanf("%d",&yz);
if ( (age >= 25) && (age <= 30) ) // 年龄在25-30之间
{
if ( (height >= 165) && (height <= 175) ) // 身高在165-175之间
{
if (sc == 1) // 身材,1-火辣
{
if ( (yz == 1) || (yz == 2) ) // 颜值,1-漂亮或者2-一般
{
printf("超女选秀合格,送往后宫。\n"); return 0;
}
}
}
}
printf("超女选秀不合格,发放五两银子后送回家。\n");
}
运行效果
4、逻辑表达式的书写
在book25.c中,采用了if嵌套的方法,其实可以采用一个复杂的if逻辑表达式一次性完成全部的判断,采用括号、对齐、空格、换行有助于更清晰的表达复杂的逻辑表达式。
示例(book26.c)
/*
* 程序名:book26.c,此程序演示在if中使用逻辑运算符。
* 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
int main()
{
int age=0; // 年龄
int height=0; // 身高,单位:厘米cm
int sc=0; // 身材,1-火辣;2-普通;3-飞机场。
int yz=0; // 颜值,1-漂亮;2-一般;3-歪瓜裂枣。
printf("请输入年龄、身高、身材(1-火辣;2-普通;3-飞机场):");
scanf("%d %d %d",&age,&height,&sc);
printf("请输入颜值(1-漂亮;2-一般;3-歪瓜裂枣):");
scanf("%d",&yz);}
if ( ( (age >= 25) && (age <= 30) ) && // 年龄在25-30之间
( (height >= 165) && (height <= 175) ) && // 身高在165-175之间
( (sc == 1) ) && // 身材,1-火辣
( (yz == 1) || (yz == 2) ) ) // 颜值,1-漂亮或者2-一般
{
printf("超女选秀合格,送往后宫。\n");
}
else
{
printf("超女选秀不合格,发放五两银子后送回家。\n");
}
}
book26.c采用一个if表达式就实现了全部逻辑的判断功能,效果与book25.c相同,如果实在理解不了,就采用book25.c中的表达方式。
5、不得不说的逻辑非
逻辑运算符有三种,上文介绍了&&和||,还有一个!没介绍,在我看来,这个运算符就不应该存在,它很容易搞乱人的思维。
大家可以先看看它是怎么回事,也可以写代码测试一下它的用法,然后就忘了它。
!就是非,取相反的意思。
例如:
if (age==25) // 判断年龄是25岁
等同
if (!(age!=25)) // 判断年龄不是25岁再取反