1.关系表达式
1.返回结果“真”--非0值和“假”--0值
2.关系逻辑运算符(<,>,<=,>=,==,!=)
使用关系运算符构建的关系表达式的结果为两种:0和1,
分别代表假和真字符型数据也可以进行关系运算
3.字符型的关系运算
字符型数据本质上也是一种整型数据
在比较时字符型使用其对应的ASCII码值进行比较
使用字符型和整型进行比较时同样使用字符对应的ASCII值跟整型数据进行比较
eg.
int i=10;
double b=9;
printf("i>b:%d\n",i>b);//0为假,非0为真
char c1='A';
char c2='a';
printf("c1>c2:%d\n",c1>c2);
int num1=20;
int result=c2<=num1;
printf("c2<=num1:%d\n",result);
printf("i==b:%d\n",i==b);//虽然类型不同,但值相同
2.逻辑运算符
需要多个条件叠加判断时需要使用逻辑运算;逻辑运算可以构建复杂的关系表达式;
逻辑运算包括三种:
与运算(&&)
表达式1 && 表达式2
或运算(||)
表达式1 || 表达式2
非运算(!)
! 表达式
逻辑运算时将非0作为真,0作为假处理;
eg.
//闰年
int year;
printf("请输入一个年份:\n");
scanf("%d",&year);
if((year%4==0&&year%100!=0)||year%400==0)
printf("%d为闰年\n",year);
else
printf("%d不为闰年\n",year);
printf("-----------------------------------\n");
运算符的优先级
运算符 | 结合性 |
---|---|
( ) | 从左到右 |
一元运算符,包括一元-,++,--,! | 从右到左 |
*,/,% | 从左到右 |
+,-,二元 | 从左到右 |
<,<=,>,>= | 从左到右 |
==,!= | 从左到右 |
&& | 从左到右 |
(或) | 从左到右 |
+=,-=,*=,/= | 从右到左 |
逻辑运算短路
因为逻辑运算有短路情况,所以造成这种结果,短路情况有以 下两种:
与运算时:表达式1&&表达式2,如果表达式1为假,表达式2不再被执行
或运算时:表达式1||表达式2,如果表达式1为真,表达式2不再被执行
eg.
//短路
int i=0,j=5;
int rst=i++&&j++;
printf("rst=%d,i=%d,j=%d",rst,i,j);
printf("-----------------------------------\n");
程序分支
C语言中分支包括:if分支和switch分支两种;
if分支语句中包含三种情况:
if分支语句
if..else分支语句
if..elseif..else分支链
* 当分支语句只有一条时,花括号可以省略,如果分支语句有多条需要使用花括号
* switch分支:break跳出循环;若没加break,case符合条件执行完,会接着往下执行
eg.
//例,if
int i;
printf("请输入一个整数:\n");
scanf("%d",&i);
if(i<0)
i=-i;
printf("i=%d\n",i);
printf("-----------------------------------\n");
//例,if...else
char isRain;
printf("今天是否有雨(Y/N):\n");
scanf("%c",&isRain);
if(isRain=='Y'||isRain=='y')
printf("下雨了,需要带雨具!\n");
else
printf("没下雨,不需要带雨具!\n");
例,if...else if...else
double temp;
printf("请输入今天的天气:\n");
scanf("%d",&temp);
if(temp<15)
printf("今天天气寒冷!请多穿衣服!\n");
else if(temp>=15&&temp<29)
printf("温度适中,可随意穿\n");
else
printf("高温炎热\n");
printf("-----------------------------------\n");
//例,成绩
double t;
printf("请输入成绩!\n");
scanf("%lf",&t);
if(t>=90&&t<=100){
printf("您的成绩优秀!\n");
}else if(t>=80&&t<90){
printf("您的成绩良好!\n");
}else if (t>=60&&t<80){
printf("您的成绩OK!\n");
}else if (t>=0&&t<60){
printf("您的成绩弱爆了!\n");
}else{
printf("输入的成绩范围0-100!\n");
}
三元运算符
表达式1 ? 表达式2 : 表达式3
判断表达式1的结果:
如果为真,整个三元运算表达式的结果为表达式2的值;
如果为假,整个三元运算表达式的结果为表达式3的结果
eg.
//...?... : ...三元运算符
int country;
char gender;
printf("您是不是中国人(1/0):\n");
scanf("%d%c",&country,&gender);
printf("您的性别('F/M')\n");
scanf("%c",&gender);
double Height=country==1?gender=='F'?1.60:1.70:gender=='F'?1.60:1.75;
printf("Height%.2f\n",Height);
随堂笔记为个人学习笔记,若有错误,望指出,谢谢!!