鱼C论坛

 找回密码
 立即注册
查看: 3547|回复: 7

为什么不能去掉以下表达式?

[复制链接]
发表于 2011-3-1 00:30:24 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
void main ()
{
  int a,b;
  printf("please input A,b: ");
  scanf("%d%d",&a,&b);
  if(a!=b)
  if(a>b) printf("A>B\n");
  else printf("A<B\n");
  else printf("A=B\n");
}


各位前辈,小弟我个人觉得程序代码中if(a!=b)应该是多余的,可是编译不能通过,因为我觉得下面if(a>b) printf("A>B\n");
  else printf("A<B\n");
  else printf("A=B\n");
}
这三句代码包括了a<b,a>b和a=b,三种情况,不正是if(a!=b)的三种情况吗?为什么if(a!=b)不能少?请前辈解释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-1 01:10:01 | 显示全部楼层
本帖最后由 风扫地 于 2011-3-1 02:13 编辑

if(a>b) printf("A>B\n");
  else printf("A<B\n");
  else printf("A=B\n");
这个是没有办法编译通过的。。
一个else(后面的语句)要与一个if配对来对if()中条件为假时系统响应的操作。
而你写的。
if(a>b) printf("A>B\n");
  else printf("A<B\n");
这两句就只能判断A是不是大于B。这里面只有两种情况,大于  不大于(即小于或等于)。。。
第三个else无法编译通过....
关于if和 else
有else 必有if。。。
有if不一定有else
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-1 08:53:56 | 显示全部楼层
本帖最后由 超越自我 于 2011-3-1 08:58 编辑

你的代码可以理解为:
#include <stdio.h>
void main ()
{
  int a,b;
  printf("please input a,b: ");
  scanf("%d%d",&a,&b);
  if(a!=b)\\这是一个嵌套的选择型判断语句,先判断a!=b,如果是a!=b,则进一步进行判断a>b还是a<b,执行嵌套判断语句,如果a=b,则不进一步判断,也就是不执行嵌套的判断语句,直接在屏幕上打印出a=b   
    {
         if(a>b) ;
         printf("a>b\n");
         else
         printf("a<b\n");
    }
  else
  printf("a=b\n");
}

ps:楼主似乎变量没有统一,一下大写一下小写,c语言变量大小写是有区别的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-1 11:04:29 | 显示全部楼层
根据你的思路我做了一个小的东西你看下哈,
只要3个条件即可
void main()
{
int a,b;
printf("pls input a,b:\n");
scanf("%d\n%d",&a,&b);
if (a>b)
printf("a=%d>b=%d",a,b);
else if(a<b)
printf("a=%d<b=%d",a,b);
else
printf("a=%d=b=%d",a,b);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-3-1 20:52:37 | 显示全部楼层
首先谢谢上面的朋友,不过在下还是不是很明白,还不是太懂嵌套,希望有朋友能够就嵌套解释一下该例题!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-1 21:00:55 | 显示全部楼层
以上的条件都不成立则执行最后的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-1 21:59:36 | 显示全部楼层
写程序多用几个括号啊,
你的程序如下:
if(a!=b)
  if(a>b) printf("A>B\n");
  else printf("A<B\n");
  else printf("A=B\n");

我加几个括号先
if(a!=b)
{
              if(a>b)                 
             {
               printf("A>B\n");
             }
              else
             {
              printf("A<B\n");
             }
}
else
{
printf("A=B\n");
}
这下对应关系应该理解了吧,
if(a!=b)                      和  else printf("A=B\n")是一对
if(a>b) printf("A>B\n) 和  else printf("A<B\n")是一对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2014-3-15 13:54:10 | 显示全部楼层
汗,表示对你很蛋疼啊,一个if后面这么可以跟两个else呢,如果你去掉那肯定会报错啦
其实这个程序是这样匹配的
if
      if
      else
else
明白了吧,第一个if匹配最后一个else
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-23 22:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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