黑马程序员技术交流社区

标题: c语言-选择结构if语句 [打印本页]

作者: 汤书亚    时间: 2014-8-25 20:03
标题: c语言-选择结构if语句
     各位朋友,你们好:
     我在听ios视频中遇到一个问题请求指点。C语言中选择结构讲到if时有一些困惑。选择结构中的:04-if第四种结构:
    if  (条件)
       语句1;
       语句2;       视频中老师讲到如果条件成立,就执行语句1,语句2就不会再执行。如果想要语句1和语句2有关联,需要加上{}。但是下面做练习时老师讲到:
int a = 10;
if  (a>1)
    printf("A\n");
    printf("B\n");    这个函数运行时输出的是A  B。这个语句并没有加{},最后怎么也执行了语句2呢?



作者: 王振宇351x    时间: 2014-8-25 20:20
本帖最后由 王振宇351x 于 2014-8-25 20:28 编辑

你说的,执行语句1,不执行语句2,是这种情况.
if  (a>1)
    printf("A\n");else
    printf("B\n");
理论上,他们可以写成这样,
if  (a>1)
{
    printf("A\n");
}
else{
    printf("B\n");
}
但是,因为中括号里面,只有一个语句,所以可以省略.
至于,下面这种情况,
if  (a>1)
    printf("A\n");
   printf("B\n");
如果没有中括号,上面的缩进是有问题的,应该是:
if  (a>1)
    printf("A\n");
printf("B\n");
有";",才表示完整的语句,if  (a>1)    printf("A\n"); 这才是一个完整的语句,后面的一行是另一个单独的语句了. if  (条件)
       语句1;
       语句2;       语句2无论如何都会执行,语句1只有条件成立才会执行。
如果想要条件成立,语句1和语句2都一起执行,需要加上{}。
if  (条件){
       语句1;
       语句2;}      



作者: ★彬★卍囧神    时间: 2014-8-25 20:29
代码还会向下走
作者: claud0623    时间: 2014-8-25 20:54
一楼正解,有没有else是你理解的和老师说的差别所在。
作者: ❤如止水之絕境    时间: 2014-8-25 21:53
只是说下一句不是属于条件语句的语句块,但程序还是会向下执行,如果要不执行打印b那一句,就要用else把那一句框起来
作者: 从今以后    时间: 2014-8-26 10:53
谢谢楼上几位回答
作者: huangxuanheng    时间: 2014-8-26 14:46
只要条件语句没有出现异常,下个语句,就一定执行。如果不加大括号她不受if的
作者: 汤书亚    时间: 2014-8-30 19:39
王振宇351x 发表于 2014-8-25 20:20
你说的,执行语句1,不执行语句2,是这种情况.
if  (a>1)
    printf("A\n");else

哦,非常感谢,很详细。
作者: 泠风小和    时间: 2014-8-31 19:25
相当于
int a = 10;
if  (a>1)
{
    printf("A\n");
}
   
printf("B\n");  // 从这一句往后的代码,都不在if结构里
作者: 达摩八戒    时间: 2014-8-31 21:58
二楼分析的很好很强大。
作者: 王绍明    时间: 2014-8-31 22:44
程序  语句 一句一句执行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2