| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 586 人关注过本帖
标题:我初学者,有个怪问题帮忙下帅哥们!~
只看楼主 加入收藏
sngnl
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-11-4
收藏
 问题点数:0 回复次数:4 
我初学者,有个怪问题帮忙下帅哥们!~
main()
{  
     int a,b;
    scanf("%d%d",&a,&b);
     if((a<=30&&b>5000)||(a>30&&b>10000))
   { printf("yes");}
    else
    {printf("no");}
    getch();
}
当我输入a大于30,b小于160000时,显示是YES,而我输入a大于30,b大于170000时却是NO,为什么呀
比如a我输入的是35,b我输入的是200000,答案却是NO(可它明明符合YES的条件呀)
?????????????????????????????



应该是INT用的溢出了谢谢各位!!!!!!!!!!

[[it] 本帖最后由 sngnl 于 2008-11-6 14:13 编辑 [/it]]
搜索更多相关主题的帖子: 帅哥 
2008-11-04 21:38
huhanlinhhl
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2008-10-26
收藏
得分:0 
170000溢出了
2008-11-04 22:08
wsq1986
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-10-13
收藏
得分:0 
&&判断时是从左到右的, a<=30 && b>5000 当你a大于30时 这条语句只执行前一段 为假 后面b>5000直接跳过.因为假与任何都是假.
不过你问的那个为什么 貌似我这编译器却没有发生这样的事 我输入35 200000的时候输出YES  不过我猜你遇到的问题就是我上面说的问题...希望我没猜错
2008-11-04 22:10
死亡军团
Rank: 2
等 级:论坛游民
威 望:2
帖 子:166
专家分:20
注 册:2008-11-4
收藏
得分:0 
int  这个整型变量的取值范围为:-32768至32767,,所以你输入的数已经超出这个范围了,,这样会使数据在内存存储时发生数据的溢出,,简单的说就是变了另一个数存储在内存里,,所以你应该定义a,b为float
2008-11-04 22:11
huhanlinhhl
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2008-10-26
收藏
得分:0 
b截断后-26605)(a>30&&b>10000)所以这个也为假
2008-11-04 22:14
快速回复:我初学者,有个怪问题帮忙下帅哥们!~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025897 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved