C语言的条件判断(分支)语句

条件判断语句

if…else…语句

if和else两个关键字,if意为“如果”,else意为“否则”,用于条件判断,并根据判断结果执行不同语句。
格式为

if(条件表达式)
{
	执行语句1//若判断条件表达式为真执行
}
else
{
	执行语句2//若判断条件表达式为假执行
}
//括号{}为多条语句的合集,如果只有一条语句也可以省略

也可以只使用if语句
当满足条件的时候有操作,不满足条件时不进行任何操作的时候可以只使用if语句,如

if(判断表达式)
{
	执行语句1
}

多个if…else…语句

if…else…可以多个使用,构造多重分支,如

if(条件表达式1)
{
	执行语句1
}
else if(条件表达式2)
{
	执行语句2
}
else if(条件表达式3)
{
	执行语句3
}
else if(条件表达式m)
{
	执行语句m
}
else 
{
	执行语句n
}

其原理是,从上到下依次判断各条件,若为真,执行其语句块,执行完毕跳出整个分支语句。若为假,执行else语句,然后跳出整个分支语句。
也就是说,逐个判断,一旦条件成立就执行相应语句块并跳出,不再执行其他语句块,所以最终只有一个语句块能被执行。

  • 建议尽量不使用这种结构,这种结构容易使人头脑不清,后面还有switch和else if 更适合解决这种问题。

if语句的嵌套

if语句也可以嵌套使用,如

if(条件表达式)
{
	执行语句
	}
else
{
	if(条件表达式1)
	{
		执行语句1
		}
		else
		{
		if(条件表达式2)
		{
			执行语句2
		}
		else
		{
			if(条件表达式n)
			{
			   执行语句n
			   }
			   else
			   {
			      printf("结束");
			   }

要保持良好的书写习惯

在编写if和else语句时要注意配对问题,C语言规定,else总是与它前面最近的if匹配,所以要保持良好的书写习惯,空格,对齐,括号成对等。

逻辑运算符

在日常生活中,要做出某个决定,需要判断的条件往往有多个。这时要用逻辑运算符表示“且”“或”“非”的概念

  • C语言用“&&”表示“并且”,用“||”表示“或者”,“!”表示非,官方定义这就是逻辑运算符。

“!”是逻辑非
!的意思就是取相反的意思,例如:

if(age == 25)//判断年龄是否等于25
等同
if(!(age!=25))//判断年龄不是25再取反

三目运算符

三目运算符也叫三元运算符,这个运算符是由一个问号和一个冒号组成。
语法:

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

如:
int a,b,c;
a = 7;
b=6;
c = (a>b)?a:b;
等同于
if(a>b)
{
	c=a;
	}
	else
	{
	c=b;
	}
	

这是一种不被建议使用的结构,过于复杂的三元结构难以理解
写代码注意:
1、最简单易懂的代码
2、最简洁的代码

switch语句

swtich是另一种多分支结构,用来代替简单的多个if else语句,基本格式如下:

switch(表达式)
{
	case 整型数值1:语句1case 整型数值2:语句2case 整型数值3:语句3......
    case 整型数值n:语句n;
    default:语句n+1;
    }

其过程用文字解释为:

(1)先计算表达式的值,设为m
(2)从第一个case开始,比较整型数值1和m的值,当整型数值和m相等时,执行所有冒号后面的语句。 也就是说一旦匹配成功,执行的就是 语句1到语句n+1,而不管后面的case是否匹配成功。
(3)如果“整数数值1”和m不相等,就跳过冒号后面的“语句1”,继续比较第二个case,第三个case。。。一旦发现和某个整数数值相等,就会执行后面所有语句。假设m和“整数数值5”相等,那么就会从“语句5”一直执行到“语句n+1"。
(4)如果到了最后一个还没有匹配,就执行default后的语句n+1。
需要强调的是switch的特点是,一旦数值匹配,就会执行后面所有的语句。

注意事项:

  • case后面必须是一个整数,或者结果为整数的表达式,但不能包含任何变量。请看下面例子:
case 10 ;  printf("..."); break;//正确
case 8+9 ;  printf("..."); break;//正确
case5;  printf("..."); break;//正确,字符可以转换为整数
case ‘A’ ;  printf("..."); break;//正确,字符可以转换为整数
case ‘A	+19;  printf("..."); break;//正确,字符可以转换为整数
case 9.5 ;  printf("..."); break;//错误,不能位小数
case a ;  printf("..."); break;//错误,不能包含变量
  • default不是必须的。当没有default时,如果所有case都匹配失败,那么就什么都不执行。
  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值