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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁丙乙甲 中级黑马   /  2015-7-27 23:21  /  2186 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


运行结果怎么是2,而不是3呢?

  1. 11.以下程序的运行结果是()。
  2. #include ”stdio.h”
  3. main()
  4. {
  5.     int a=2,b= -1,c=2;
  6.     if (a<b)
  7.         if (b<0)
  8.             c=0;
  9.         else c++;
  10.     
  11.     printf(”%d\n”,c);
  12. }
复制代码

22 个回复

倒序浏览
else 配对的是第二个if,第一个if不成立,后边的代码都不执行,建议在写if else的时候,都加上{},一来便于读写代码,二来也是语法规范。当你进入公司的时候,很多公司都要求规范书写的,从现在保持一个良好的规范吧。
回复 使用道具 举报
else 就近原则选取if配对
回复 使用道具 举报
Northcity 发表于 2015-7-27 23:43
else 就近原则选取if配对

楼上正解
回复 使用道具 举报
这个头文件怎么这么奇怪。
回复 使用道具 举报
 楼主,下面给出了你的源代码的等价代码,实际结果相当于直接将 c 的值打印出来。很简单的,能看懂了吗?

#include ”stdio.h”
main()
{
    int a=2,b= -1,c=2;
    if (a<b){
        if (b<0)
            c=0;
        else c++;
    }
    printf(”%d\n”,c);
}
回复 使用道具 举报
cpo007 中级黑马 2015-7-28 13:13:43
7#
bujia括号不是作死me
回复 使用道具 举报
香港 中级黑马 2015-7-28 13:20:57
8#
判断完就没往if执行就直接打印了   
回复 使用道具 举报
输出2吧,if里面都没执行到
回复 使用道具 举报
是故意不加{}的吗 呵呵了
回复 使用道具 举报
学习啦。
回复 使用道具 举报
学习学习
回复 使用道具 举报
红双喜 发表于 2015-7-28 00:19
这个头文件怎么这么奇怪。

一样的··
回复 使用道具 举报

:victory:      大神还来水:shutup:
回复 使用道具 举报
相当于 int a = 2, b = -1, c =2;
printf("%d\n",c);
回复 使用道具 举报
if else 就近匹配原则,你的写法也不好,加上大括号把上下的if用大括号分开作用域,如果你是水分的。。。就当我没说
回复 使用道具 举报

水水更健康
回复 使用道具 举报
c=2 第一个if不成立 就不会去执行{}中的代码 就是说07到09这几行的代码都不执行
回复 使用道具 举报
把中间那个IF 用括号 扩起来 就搞定啦
回复 使用道具 举报
本帖最后由   张恒宇 于 2015-7-29 22:52 编辑

你这样的代码是怎么写出来的。。。。主函数不交代是否有返回值。。。。if条件判断之后要做什么。。。。还有你这是要嵌套IF的话也没有{}怎么解释。。。。
#include <stdio.h>
int main()
{   
           int a=2,b= -1,c=2;   
              if (a<b)            
  {        
                    if (b<0)        
           {            
                          c=0;        
              }            
}         
             else c++;        
             printf("%d\n",c);
  }               得出的结果是3.。。你的程序没有办法得出结论。。。

#include <stdio.h>
int main()
{
    int a=2,b= -1,c=2;
    if (a<b)
        

    {
        if (b<0)
           {
               c=0;
           }
        else c++;

        
    }
   
    printf("%d\n",c);
}
这样的出来的结果是2.。。if 和esle的用法是看if后面大括号来决定else和谁配对的。。。。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马