c语言条件分支,C语言之条件分支结构

本文详细讲解了C语言中的关系运算符、逻辑运算符及其优先级,介绍了if、if-else和三目运算的使用,并特别关注了浮点数精度问题。通过实例说明了如何避免因精度误差导致的逻辑判断错误,推荐使用double类型提高精度。
摘要由CSDN通过智能技术生成

1.运算符:

1.关系运算符:

在C语言中,非0(非零)表示真(对),0(零)表示假(错)。

运算符

含义

示例

小于

i< j

>

大于

i>j

<=

小于等于

i <= 12

>=

大于等于

i >= 12

==

等于

i == 12

!=

不等于

i != 12

2.逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!) ;

int a = 10, b = 20, c =30;

a > b && b> c   //正确写法

a > b > c           //错误写法

逻辑运算短路状况:

u  与运算时,表达式1&&表达式2,如果表达式1为假,表达式2不再执行

u  或运算时,表达式1||表达式2,如果表达式1为真,表达式2不再执行

3.运算符优先级:

运算符

结合性

()

从左到右

一元运算符,包括一元 -, ++, --, !

从右到左

*,/,%

从左到右

+,二元 -

从左到右

, >=

从左到右

==,  !=

从左到右

&&

从左到右

||

从左到右

+=, -=, *=, /=, =

从右到左

2.程序分支:

if分支:

l   if分支语句

格式:if(表达式){分支语句}

规则:当表达式成立时,执行分支语句;表达式不成立时,不执行分支语句

l   if..else分支语句

格式:if(表达式)

{分支语句1}

else{分支语句2}

规则:当表达式成立时,执行分支语句1;表达式不成立时,执行分支语句2(属于2选1的情况)

l   if..elseif..else分支语句

格式:if(表达式1){分支语句1}

else if(表达式2){分支语句2}

else{分支语句3}

规则:当表达式1成立时,执行分支语句1;表达式2成立时,执行分支语句2,否则执行表达式3;此为多选一多情况。且需要一层一层比较,直到表达式成立或整个条件分支语句结束。

三目运算(三元运算):

公式:表达式1?表达式2:表达式3;

当表达式1成立时,获得表达式2的结果;

当表达式1不成立时,获得表达式3的结果。

例如:a > b ? c : d;

switch..case:

switch(整型表达式)

{

case 数值1:

语句1;

break;

case数值2:

语句2;

break;

}

switch(整型表达式)

{

//多条件判断,与if的逻辑或一样

case:数值1:

case:数值2:

break;

}

等同于

if(表达式1 ||表达式2){};

从表达式获得值后,直接匹配到相应到数值执行代码,而不需要一层一层的判断(跟if..elseif..else的区别),这样代码执行效率高。

注意:

l整型表达式必须是整型(包含字符型,因为字符型本质就是整型)。

lbreak不要忘记。

lswitch..case可以用if..elseif ..else替换,但if..elseif..else不一定可以用switch..case替换。

易错点:

问题1:(编译器造成)

float height;

printf(“请输入身高:”);

scanf(“%f”,&height);

if(height > 0 && height <= 1.20)

{

printf(“不用购票\n”);//代码块1

}

else

{

printf(“输入有误!\n”);//代码块2

}

PS:这时输入1.2,不会执行代码块1,而执行代码块2(本应该执行代码块1的)。

原因:

float的精度不够高,会出现误差,得到到值是1.200005,会大于1.2,所以不在if条件的范围内。

解决方法:

把float height改为double height;(double的精度会比float的精度高,不会出现误差,可以等到值1.200000),尽量用double类型来定义数值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值