条件判断语句
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:语句1;
case 整型数值2:语句2;
case 整型数值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;//正确 case ‘5’ ; printf("..."); break;//正确,字符可以转换为整数 case ‘A’ ; printf("..."); break;//正确,字符可以转换为整数 case ‘A +19’ ; printf("..."); break;//正确,字符可以转换为整数 case 9.5 ; printf("..."); break;//错误,不能位小数 case a ; printf("..."); break;//错误,不能包含变量
- default不是必须的。当没有default时,如果所有case都匹配失败,那么就什么都不执行。