分支语句if语句
if语句
if(表达式)
语句;
判断表示式是否为真(非0),为真则执行if内的语句,为假(为0)则不执行。
if中包含多条语句
在if后面没有加花括号时,只能控制后面一条语句,以分号结尾。
比如:为了防止孩子早恋,我们限定他们只有成年(18岁)后才能谈恋爱
int a;
scanf("%d",&a);//比如这个输入a为10;
if(a>=18)
printf("我成年了");//不会被输出
printf("我可以谈恋爱了");//这条语句会被输出,
当输入的值为10时,按理来说两条语句都不会被输出,但结果却是第二条语句被输出,第一条没有被输出。这是为什么呢?
因为if如果想要控制多条语句,就必须要在if后面加上大括号
int a;
scanf("%d",&a);//输入10
if(a>=18)
{
printf("我成年了");
printf("我可以谈恋爱了");//两条语句都不会被输出
}
if与else
当if后面的表达式为假时,则执行else中的语句
int a;
scanf("%d",&a);//如果a输入的不是1,则执行else语句,因为if后面表达式的判断结果为假
if(a=1)
{
printf("这是1");
}
else
{
printf("这是2");
}
if的嵌套
if…else中,else可以与另一个if连用,构成多重判断。
int a;
scanf("%d",&a);
if(a==1)
{
printf("1");
}
else if(a==2)
{
printf("2");
}else{
printf("3");
}
else 后面的if就相当于在else里嵌套了一个if,从if到后面的else部分,都是嵌套在前面的else里面的。
if里面嵌套if:
int a;
scanf("%d",&a);
if(a>0)
{
if(a%2==0)
{
printf("正偶数");
}else{
printf("正奇数");
}
}
第一层的if判断输入的值是否为正数,为真则进入语句再次判断是否为偶数,为真则输出,“正偶数”,为假,则输出"正奇数"。
关于else悬空的问题
上例子:
int a=0,b=1;
if(a==1)
if(b==2)
printf("6");
else
printf("7");
这段代码最后的输出结果是什么?有没有朋友认为最后输出是7的?但其实他最后啥也不输出。
很多初学者看到这段代码一眼便把else与第一个if进行配对了,但其实不是这样的,else的配对原则:与就近的没有配对的if进行配对。也就是说,else是与第二个if配对的。
如果你想输出else语句中的内容,可以改成如下这样:
int a=0,b=1;
if(a==1){
if(b==2)
printf("6");
}
else{
printf("7");
}