目录
1.单分支语句 if
2.多分支语句 switch
一、if语句
//第一种//
if(关系表达式)
{
语句体;
}
//第二种//
if(关系表达式)
{
语句体1;
}
else
{
语句体2;
}
执行条件:
if语句是否执行取决于“括号”中的关系表达式是否为真,如果为真则执行if语句的语句体,如果为假则不执行,或者执行else语句体。
关系表达式:
既然括号中关系表达式的真假决定if语句的执行问题,那么关系表达式我们到底可以怎么去填写呢?
1、首先我们要了解什么是关系表达式:
关系表达式通常是指在计算机程序中,使用关系运算符连接两个表达式所形成的式子。这些表达式的值是逻辑值,通常是“真”或“假”。在编程语言中,关系表达式的求值结果通常用非零(代表“真”)或零(代表“假”)来表示。例如,如果关系表达式成立,则表达式的值为1(代表“真”),否则表达式的值为0(代表“假”)。
2、那问题又来了,什么是关系运算符:
关系运算符包括大于、大于等于、小于、小于等于、等于和不等于。
因此我们不难发现,a>b,就是一个由关系运算符连接而成的关系表达式,如果a真的大于b那么这个表达式值为1(即非零)则为真,反之值为0则为假。现在有了真假就可以对if语句进行判别与执行。
特殊书写格式:
如果if/else后面不接“大括号”——“{}”,则它们分别只能控制离自己最近的一条语句。
if(a>b)
printf("a>b\n");
else
printf("a<=b\n");
if(a>b)
{
printf("a>b\n");
}
else
{
printf("a<=b\n");
}
这两种写法是等价的,执行结果没有区别。
二、switch语句
switch(表达式){
case 常量表达式1: 语句1;
case 常量表达式2: 语句2,break;
……
case 常量表达式n: 语句n;
default: 语句n+1;
}
switch语句是一种多分支选择语句。它与if的不同在于:if语句的选择只有两个分支(即满足或不满足、非A即B),switch语句则具备多种选择,可能是A\B\C\D.......或者意外情况(default),因此对于可能出现多种选择的情况下,switch应用性更加强大。接下来,我们逐步来了解这几个概念:case、常量、常量表达式、break、default。
case
“case”我们在这只用将其理解为“情况”的意思,case 1(即switch中表达式为1的情况),case在这做类似引导词的作用。不必过度深究。
常量
常量是指在程序运行过程中其值保持不变的数据。常量的类型主要包括以下几种:
数值型常量。数值型常量可以是整数(包括正整数、负整数和零),也可以是实数(即浮点数)。整型常量可以使用十进制、八进制或十六进制表示,其中八进制数和十六进制数以0和0x开头。实型常量通常带有小数点,可以表示为传统的小数形式或指数形式。
字符型常量。字符型常量是用单引号括起来的单个字符。
字符串常量。字符串常量是用双引号括起来的字符序列。
布尔型常量。布尔型常量仅有两个值:true(真)和false(假)。
空常量(null常量)。空常量代表没有任何数据
常量表达式
常量表达式是指表达式中只包含常量的式子。例如,1+2就是一个常量表达式。如果定义了a为常量1,那么a+2也是常量表达式。需要注意的是,如果a被定义为变量,那么a+2就不是常量表达式了。
break
break的作用是“跳出此switch语句”
eg:
int a=1;
switch(a){
case 1: a++;
case 2: a++,break;
case 3: a++;
……
case n: a++;
default: a++;
}
printf("%d",a);
此时,a的数值为1,因此进入case 1,执行语句“a++”,此时a的数值为2,但是由于程序仍然在switch语句之中并没有跳出,所以走到了case 2,执行语句“a++”,此时a数值为3,然后遇到了break,跳出了switch语句,执行打印语句:printf("%d",a)。这个时候打印出来的a的数值就是3。 有对比才能凸显出作用,如果没有break语句,因为a初始值为1,就会从case1,进入一直执行到default,a自加n+1次。如此来看,break的作用就显而易见了。
default
还是以此为例:
int a=0;
scanf("%d",&a);
switch(a){
case 1: a++;
case 2: a++,break;
case 3: a++;
default: printf("您输入错误了!\n");
}
printf("%d",a);
我们现在明知case只有1、2、3这三种情况,那如果我非要让a的初始值不是1、2、3任何一个数呢?
实际上在这种情况下,switch语句是不会做出反应的,但是一个好的程序不仅仅要能对合法数据进行相关操作,也要能对非法数据作出回应,这个时候default就发挥作用了,当你输入数据不符合任何一个case时,就执行default的语句体,进行反馈。
default与case的位置可以在switch中随意放置,切记case不会在执行后跳出switch,default同样不会,都有需要与break配合使用!!!
谢谢!希望我们KT进步~