鱼C论坛

 找回密码
 立即注册
查看: 2597|回复: 9

各位:帮忙看看 这两个代码有什么不同???疑问中???希望用汇编的角度解释一下!

[复制链接]
发表于 2012-8-9 14:24:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
//代码1
#include <stdio.h>
int main()
{
int a = -10;
int b = -10;
if ( a < 0 )
  b = -1;
else if (a == 0)
  b = 0;
else b = 1;
printf("%d",b);
   getch();

return 0;
}

//代码2
#include <stdio.h>
int main()
{
int a = -10;
int b = -10;
if ( a < 0 )
  b = -1;
else
{
if (a == 0)
  b = 0;
else b = 1;
}
printf("%d",b);
    getch();

return 0;
}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-9 16:25:43 | 显示全部楼层
没有区别 或者说 你认为应该有什么区别 说说看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-8-9 16:47:53 | 显示全部楼层
本帖最后由 sun2842451 于 2012-8-9 16:49 编辑


代码1是if....else if ....else if....else
代码2是if....else 中嵌套的if ....else....

在谭浩强 写的C程序设计(第四版)中的第90页提到过  
  我用VC反汇编 看了一下汇编代码 结果是一样的


我现在附上 代码  请参考
//代码1
#include <stdio.h>
int main()
{
    int a=5;
   
     if ( a==1 )
      printf("a=1");
   
     else if (a == 2)
      printf("a=2");
    else if (a == 3)
      printf("a=3");
    else if (a == 4)
      printf("a=4");
    else
      printf("haha");
    getch();

return 0;
}


//代码2
#include <stdio.h>
int main()
{
    int a=5;
   
     if ( a==1 )
      printf("a=1");
   
     else
          {
           if (a == 2)
      printf("a=2");
   
           else
            { if (a == 3)
      printf("a=3");
   
         else
              {if (a == 4)
      printf("a=4");
     else
               printf("haha");
               }
            }
          }
    getch();

return 0;
}


test.rar

155.75 KB, 下载次数: 8

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-9 17:15:58 | 显示全部楼层
if 嵌套
if if嵌套
if ifelse  else if else嵌套
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-9 17:16:24 | 显示全部楼层
一样的   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-9 17:17:21 | 显示全部楼层
sun2842451 发表于 2012-8-9 16:47
代码1是if....else if ....else if....else
代码2是if....else 中嵌套的if ....else....

......我不知道谭浩强90页 说了些什么 不过 你这两个代码效果上本来就是没区别 生成的汇编代码一样不用意外啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-8-9 17:39:26 | 显示全部楼层
我是师兄 发表于 2012-8-9 17:17
......我不知道谭浩强90页 说了些什么 不过 你这两个代码效果上本来就是没区别 生成的汇编代码一样不用意 ...

效果都一样 汇编代码页都一样

但是 书上为什么这么写?我还不能理解谭浩强为什么这么写!

他这么写
         就是说  代码1是if....else if ....else if....else
                    代码2是if....else 中嵌套的if ....else....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-10 11:32:04 | 显示全部楼层
sun2842451 发表于 2012-8-9 17:39
效果都一样 汇编代码页都一样

但是 书上为什么这么写?我还不能理解谭浩强为什么这么写!

他无聊 很简单的东西喜欢啰啰嗦嗦扯上几十句话 不必深究 然后 其实 我是常常会黑谭浩强
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-8-10 15:03:17 | 显示全部楼层
我是师兄 发表于 2012-8-10 11:32
他无聊 很简单的东西喜欢啰啰嗦嗦扯上几十句话 不必深究 然后 其实 我是常常会黑谭浩强

哈哈 我搞明白了  就是一样的


我把谭浩强的 第99页到102页读了一遍 就明白了!


if
  else if

  else if

  else if

  else if

  else if

  else if

else   就是选择结构的嵌套!   
   但是我还有一个不明白的地方? 就是“其实 我是常常会黑谭浩强”是什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-10 15:11:01 | 显示全部楼层
sun2842451 发表于 2012-8-10 15:03
哈哈 我搞明白了  就是一样的

比较鄙视这个人写的介绍C语言的书
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 00:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表