1、if语句
是 选择结构的代表性语句:用来判断给定的条件是否满足,根据判断的结果(真、假)决定执行给出的两种操作之一。
if语句三种形式:
1)、if(
表达式)
语句 :如果表达式中的条件满足则执行该语句。
int x = 6;
if(x>5)
{
printf("x值>5\n");
printf("x的值为%d\n",x);
}
2)、if(
表达式)
语句1 else
语句2:如果表达式的条件满足,则执行语句1,否则执行语句2,语句1和语句2中有且只有一个语句能够被执行。
int x=5,y=6;
if(x>6)
{
printf("x>y是OK的");
printf("x>y是OK的2");
}
else
{
printf("x>y是不OK的");
}
3)、if(
表达式1)
语句1
else if(
表达式2
)
语句2
else if(
表达式3
)
语句3
else if(
表达式4)
语句4
..........
else if(
表达式m)
语句m
else
语句n
如果表达式1成立,则执行语句1;否则表达式2成立,则执行语句2.。。。。
如果表达式m成立,则执行语句m。。。。。
如果表达式1~m都成立,则执行表达式n。【
只要有一个条件满足,其他条件就会跳过】
说明:
(1)if语句后面都有表达式,这个算术表达式一般为
逻辑表达式或者
关系表达式。
if(a ==b &&x==y) // == &&
printf("OK");
表达式可以扩展一下:如果表达式值为0,那么按“假”处理,如果表达式的值为非0,则按“真处理”。
(2)if语句可以单独使用,但是else语句不能单独使用,必须和if语句配对使用,也就是说,
如果出现了else,则必然会对应一个if。
if语句的嵌套:在if语句中又包含一个或者多个if语句,就称为if语句的嵌套。
if()
if() 语句1
else 语句2
else
if() 语句1
else 语句2
else和if的配对关系:
else总是和他上面的尚未配对的if语句进行配对。
2、条件运算符
条件运算符有三个操作对象,也叫
三目运算符,它是C语言中唯一一个三目运算符。
一般形式:
表达式1 ? 表达式2
:表达式3;
执行过程:
条件运算符的优先级比关系运算符低。
条件运算符的结合顺序是
从右到左的,所以:
a>b?a:c>d?c:d ==> a>b?a:(c>?c:d)
int a =4,b=5,max;
max = (a>b)?a:b; //如果a>b的值为真,则条件表达式取a的值作为整个值,否则取b的值作为整个值。
3、switch语句
多分支选择结构,用的频率相对较高
格式:
switch(表达式)
{
case 常量表达式1:
{
1行或者多行语句;
}
break;
case 常量表达式2:
一行或者多行语句;
break;
.............
case 常量表达式n:
一行或者多行语句;
break;
default:
一行或者多行语句;
break;
}
执行过程:
switch后边的表达式的值若满足任何某个case后面的常量表达式的值,则执行该case后面的一行或者多行语句,一直遇到break停止,跳出整个switch语句。
如果所有case条件都不满足,则会执行default中包含的一行或多行语句,然后跳出整个switch语句。
说明:
a、switch后面表达式一般都是
整型变量或表达式,其他类型也允许,但是都罕见;
b、每个case后面的常量表达式
必须互不相同,不然会出现编译错误;
c、各个case语句之间,case和default语句之间,
顺序没有影响,谁在上边,谁在下边,都不所谓。
d、绝对
不要忘记break语句,否则后果严重;如果忘记break语句的后果是:如果一个case语句末尾不加break的话,会导致执行完一个case中包含的语句后,流程继续会执行下一个case条件中包含的语句(而不管该case条件是否满足);也就是说,从满足条件的case语句那里作为入口一直执行下去,除非遇到break语句或者整个switch语句执行完毕。
e、case后面可以有多行语句,而且不用加{},
系统会自动顺序执行case后面的所有语句,一直到break,当然有人习惯加{}也是可以的。
f、
default 可以没有,当没有的时候,那么当所有case条件都不满足,则整个switch都不被执行。
g、
多个case语句可以共用一组执行语句。