奇怪!搞不明白。

chwhang 2003-08-20 11:40:51
main()
{int i,j,sum;
printf("please input i:\n");
scanf("%d",&i);
if(5<=i<10)
/*i>=5&&i<10;*/
{sum=0;
for(j=1;j<=i;j++)
sum=sum+j;}
else if(i<5)
{
sum=1;
for(j=1;j<=i;j++)
sum=sum*j;
}
printf("%d",sum);
}

5<=i<10和i>=5&&i<10有什么不同?
我用一个if-else if语句。第一次用if(5<=i<10)程序不理我输入大于5的数还是小于5的数它都只执行if里面的语句。但把if的条件改成if(i>=5&&i<10).就全部问题解决了。

...全文
46 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wowowowo 2003-08-21
  • 打赏
  • 举报
回复
楼上的都说对了吧
xiwangzhiguang 2003-08-21
  • 打赏
  • 举报
回复
UP
chon81 2003-08-21
  • 打赏
  • 举报
回复
5<=i<10
是先算5<=i,
要是为真,就算1<10,这肯定为真了.
要是为假,就算0<10,这肯定也是真了.
所以无论i为什么,都是真.

而i>=5&&i<10
是先算,i>=5
再算i<10
然后再对两个结果进行与运算
ding198116 2003-08-21
  • 打赏
  • 举报
回复
aflyinghorse() 说得非常对,初学者要小心这些问题呀!
ShiChao 2003-08-21
  • 打赏
  • 举报
回复
aflyinghorse说的很对
if(5<=i<10),不能像数学那样写
得写
if ((5 <= i) && (i < 10))
aflyinghorse 2003-08-20
  • 打赏
  • 举报
回复
5<=i<10 会被看作((5<=i)<10 )
(5<=i)的结果为bool值,即0或1
所以不管i为多少,(5<=i)都小于10
远古猛犸象 2003-08-20
  • 打赏
  • 举报
回复
5<=i<10这样写是不对的
如果i<5,那么执行下来是这样的:5<=i为假,假(也就是0)<10为真,结果是真
如果i>5,那么执行下来是这样的:5<=i为真,真(也就是1)<10为真,结果是真
simclock 2003-08-20
  • 打赏
  • 举报
回复
能这么写么?

5<=i<10 就不是那个意思了吧?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧