搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 初学者求教问题
标题:
初学者求教问题
只看楼主
shuai2008
等 级:
新手上路
帖 子:5
专家分:0
注 册:2010-9-25
结帖率:
0
楼主
已结贴
√
问题点数:20 回复次数:9
初学者求教问题
当我输入98303此条件显示不成立,显示为1111,按理说凡是不符合其中一组数值的条件输入,显示应该不成立,也就是显示1111,但是经过我反复的输入发现凡大于98303这个数值,这个显示却是成立,显示为0000,不知道为什么?难道是整型赋值的范围的溢出,我纠结了好久,请各位专业人士帮个忙
搜索更多相关主题的帖子:
专业
2010-09-25 11:28
红色警戒
等 级:
贵宾
威 望:
19
帖 子:444
专家分:2967
注 册:2005-11-20
第
2
楼
得分:5
你用的什么编译器,我在vc6下运行都是显示 输出1111
2010-09-25 11:49
shuai2008
等 级:
新手上路
帖 子:5
专家分:0
注 册:2010-9-25
第
3
楼
得分:0
我用的WIN-TC
2010-09-25 11:54
红色警戒
等 级:
贵宾
威 望:
19
帖 子:444
专家分:2967
注 册:2005-11-20
第
4
楼
得分:0
把int改为long试试看什么结果
2010-09-25 12:04
shuai2008
等 级:
新手上路
帖 子:5
专家分:0
注 册:2010-9-25
第
5
楼
得分:0
我不是想解决这个输入条件,只是想知道这为什么超过这个数值会显示那样的情况
2010-09-25 12:15
shuai2008
等 级:
新手上路
帖 子:5
专家分:0
注 册:2010-9-25
第
6
楼
得分:0
没人帮我解答
2010-09-26 01:32
zzgzzg00
等 级:
黑侠
威 望:
2
帖 子:388
专家分:627
注 册:2010-8-2
第
7
楼
得分:5
可能是这样的
对于int a
当a为98303时 它最后的答案其实是32767 (即98303=98303-32768-32768)
而当a为98304时 最后的答案就是-32768了 (即32767+1=-32768) 还是数据溢出的缘故吧
所以把int改为long应该可以
建议看下内存对数据的存储方式那片的知识应该可以明白
即为什么32767+1会等于-32768
[
本帖最后由 zzgzzg00 于 2010-9-26 09:09 编辑
]
粗心是大敌
2010-09-26 09:01
shuai2008
等 级:
新手上路
帖 子:5
专家分:0
注 册:2010-9-25
第
8
楼
得分:0
THANKS
2010-09-26 11:38
tzp876301129
等 级:
论坛游民
帖 子:29
专家分:31
注 册:2010-5-16
第
9
楼
得分:5
?????????????????????????????????????????????????????????????
2010-09-26 17:19
A13433758072
来 自:广东潮州
等 级:
小飞侠
威 望:
1
帖 子:1182
专家分:2784
注 册:2010-7-22
第
10
楼
得分:5
回复 楼主 shuai2008
很明显这是溢出了,int的数值范围是-32768~32767,你应用上面说的long的范围是 - 2147483648~2147483647,溢出系统是不会报错的,要避免发生类似情况。
一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入, QQ群38490319
2010-09-26 20:16
10
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-321276-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.028668 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved