爱问知识人 爱问教育 医院库

求解一道C程序的问题

首页

求解一道C程序的问题

main()
{ float x=2.0,y;
  if(x<0.0) y=0.0;
  else if((x<5.0)&&(!x)) y=1.0/(x+2.0);
  else if(x<10.0) y=1.0/x;
  else y=1.0;
  printf("%f\n",y);
}
上面的程序运行后得出的结果为:0.500000
我有以下几个问题不明白,请各位高手指教:
1: else if((x<5.0)&&(!x)) y=1.0/(x+2.0); 中的(!x)是什么意思,难道是自己否定自己吗?
2:看了结果我想程序最终也是执行了 else if((x<5.0)&&(!x)) y=1.0/(x+2.0);这行才得出的结果,我不明白y=1.0/(x+2.0)=1.0/4.0 从书上我了解到"/"号取得的结果是商,所以我自己理解这个运行的结果应该是0啊。

提交回答
好评回答
  • 2006-01-12 10:36:47
    多重条件语句范围有重叠,导致路径不唯一,再有还是去补习一下C的那些基本知识吧,你不知道除法运算符吗?

    笑***

    2006-01-12 10:36:47

其他答案

    2006-01-11 10:55:44
  • 1.  ((x<5.0)&&(!x))这一句的意思是:X<5.0 和!X 做短路运算,其结果是一个布尔值。 其中!x 意思是 X 的逻辑非。
    2.  您程序中所有的 ; 都是正确的吗?最好重新再看一下,那很重要。 请采纳我的答案。

    k***

    2006-01-11 10:55:44

类似问题

换一换
  • 软件 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):