标题:我初学者,有个怪问题帮忙下帅哥们!~
只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-242446-1-1.html




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

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