A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汤书亚 中级黑马   /  2014-8-25 20:03  /  1576 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

     各位朋友,你们好:
     我在听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呢?


10 个回复

倒序浏览
本帖最后由 王振宇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;}      


回复 使用道具 举报
代码还会向下走
回复 使用道具 举报
一楼正解,有没有else是你理解的和老师说的差别所在。
回复 使用道具 举报
只是说下一句不是属于条件语句的语句块,但程序还是会向下执行,如果要不执行打印b那一句,就要用else把那一句框起来
回复 使用道具 举报
谢谢楼上几位回答
回复 使用道具 举报
huangxuanheng 来自手机 中级黑马 2014-8-26 14:46:37
7#
只要条件语句没有出现异常,下个语句,就一定执行。如果不加大括号她不受if的
回复 使用道具 举报
王振宇351x 发表于 2014-8-25 20:20
你说的,执行语句1,不执行语句2,是这种情况.
if  (a>1)
    printf("A\n");else

哦,非常感谢,很详细。
回复 使用道具 举报
相当于
int a = 10;
if  (a>1)
{
    printf("A\n");
}
   
printf("B\n");  // 从这一句往后的代码,都不在if结构里
回复 使用道具 举报
二楼分析的很好很强大。
回复 使用道具 举报
程序  语句 一句一句执行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马