if语句又称为条件语句,可以实现多路分支。C语言中,if语句一般格式如下:
if(条件1)
{
语句1
}
else if(条件2)
{
语句2
}
else if (条件3)
{
语句3
}
…
else if (条件m)
{
语句m
}
else
{
语句m+1
}
其中,<条件1>,<条件2>,<条件3>…<条件m>表示if语句的条件表达式,用来判断执行哪一条语句。在执行if语句时,先对条件表达式求解,然后根据结果执行指定语句。这里条件表达式可以是逻辑表达式、关系表达式等。
一个判断条件的结果只有两种可能:条件成立与不成立。在许多高级语言中,都用逻辑值 “真”表示条件成立;用逻辑值 “假”表示条件不成立。在C语言中,没有专门的逻辑值,而是借助于非0值代表 “真”,0值代表 “假”。只要条件表达式的值为非0,if条件就成立,执行其后面的语句。例如:
int y=0;
if(a)
{
y=4; /*如果为真,y值为4*/
}
else
{
y=5; /*否则,y值为5*/
}
这段代码执行后,y的值为4,因为字符a
的ASCII值为97,if的条件表达式是一个非0值。
语句1,语句2,语句3…语句m+1是if语句的执行语句,可以是一条语句,也可以是复合语句。注意,每条语句的后面都以分号结尾。
在实际应用中,我们很少用到这么多条件。当条件足够多时,我们往往会选择switch语句,酷客教程switch语句中进行详细讲解。
常用的if语句格式
通常在运用的过程中,if分支语句有几种常用的格式:
格式一:
if语句最简单的格式是没有else,只有if关键字。格式如下:
if <条件> 语句
这种if语句的执行过程是,<条件>所给出的表达式为真时,执行语句;当<条件>所给出的表达式为假时,不执行语句,即直接跳过if语句,执行程序下面的语句。程序执行流程如图所示:
例如:输出两个数的最大值:
if(a<b)
a=b;
printf("a=%d\n",a);
格式二:
程序中应用最多的if语句是两路分支,它的基本格式如下:
if(条件1)
语句1
}
else
{
语句2
}
该种形式的功能与简单if语句相似,首先判断条件,当<条件1>所给出的表达式为真时,执行语句1,否则执行语句2。程序执行流程如图所示。
if语句的嵌套
在if语句中出现的执行语句既可以是一条语句也可以是复合语句,那么在复合语句中可以再次出现if语句吗?当然可以!这就是if语句的嵌套。格式如下:
if(条件1)
{
if(条件2)
{
语句1
}
else
{
语句2
}
}
else
{
if(条件3)
{
语句3
}
else
{
语句4
}
}
此种格式最重要的一点就是,注意if与else的配对关系。
else总是与它前面离它最近的未配对的if语句配对,与程序的缩进无关。缩进的作用只是使代码富有层次感,易于他人阅读,与目标代码的生成毫无关系。在设计程序时,为表示清楚程序设计的目的,我们可以适当使用{}来确定配对关系。
一段if与else配对错误的程序如下:
int a=0,b=1;
if (a==0)
if (b==1)
printf("Good!\n");
else
printf("Bad!\n");
很多人初看此代码时,以为else是和if (a==0) 配对的。实际上,如果a不为0,此段代码根本不会执行。只有在a为0,并且b不为1时,才可以执行else语句。由此可见,我们要养成良好的编程风格,确定好各个代码的缩进量。此段代码可以改为:
int a=0,b=1;
if (a==0)
{
if (b==1)
{
printf("Good!\n");
}
else
{
printf("Bad!\n");
}
}
但是,若我们是希望else和if (a==0) 配对,则需要写成:
int a=0,b=1;
if (a==0)
{
if (b==1)
{
printf("Good!\n");
}
}
else
{
printf("Bad!\n");
}
此处运用{}来确定配对关系。所以,以后大家在运用if…else…时,一定要注意它们之间的确切关系。
评论前必须登录!
注册