啊哈磊_编程从这里起步

标题: 啊,好无语。为什么会是这个结果。 [打印本页]

作者: 1233333    时间: 2014-2-8 22:02
标题: 啊,好无语。为什么会是这个结果。
为什么不可以用这种方法计算大数字,我计算一些数字结果毕竟小的时候是对的,但是如果数字太大,为什么是这种结果?

作者: 李掌柜    时间: 2014-2-8 22:02
1233333 发表于 2014-2-17 13:16
感谢你们的回答,但,楼主我表示看不懂!

很简单,你的程序数据太大,已经没有一个数据类型可以包含了,就是溢出~~
比如说,你一双手只有十个手指,你偏要数十二个手指出来,问题来了,因为一个人的手
只能用十个手指来表示,所以,你现在数到的手指不是十二个手指,而是二个手指,
还是别人的哦~~~
现在明白了吧~~~~

作者: 1233333    时间: 2014-2-8 22:06
我把A,B,C,D,G,的数字改为2时,计算结果是10,那就是对的啊!可是上面的数字为什么不可以计算?
作者: 李掌柜    时间: 2014-2-8 22:24
这个问题很简单,大数据就要放一个大的数据类型,比如有符号long long  无符号double类型,你把第五行代码的int 改成 long long 试试~~
作者: 1233333    时间: 2014-2-9 13:48
非常感谢!
作者: 1233333    时间: 2014-2-9 13:53
但是如果我想计算小数,然后还有整数,还有很大的数,是不是就得把int改为 int,long long,float+字母?
作者: 李掌柜    时间: 2014-2-9 17:54
1233333 发表于 2014-2-9 13:53
但是如果我想计算小数,然后还有整数,还有很大的数,是不是就得把int改为 int,long long,float+字母?

熊孩子,小数点就有浮点类型哈~~一般float就够用了~~
作者: 超神级    时间: 2014-2-9 21:24
输出格式符改成%u
作者: 4399APPLE    时间: 2014-2-10 20:15
李掌柜 发表于 2014-2-9 17:54
熊孩子,小数点就有浮点类型哈~~一般float就够用了~~

float会有精度损失
作者: 4399APPLE    时间: 2014-2-10 20:15
李掌柜 发表于 2014-2-8 22:24
这个问题很简单,大数据就要放一个大的数据类型,比如有符号long long  无符号double类型,你把第五行代码的in ...

啊哈C中,long和int一样大……
作者: 4399APPLE    时间: 2014-2-10 20:16
1233333 发表于 2014-2-9 13:53
但是如果我想计算小数,然后还有整数,还有很大的数,是不是就得把int改为 int,long long,float+字母?

你如果想“狼”一点,试试这条代码:
long long long a;
注意看错误提示。
作者: 4399APPLE    时间: 2014-2-10 20:17
溢出
这种情况是典型的上溢
作者: 李掌柜    时间: 2014-2-11 17:37
4399APPLE 发表于 2014-2-10 20:16
你如果想“狼”一点,试试这条代码:
long long long a;
注意看错误提示。

long 或  long int 一般是32位..
long long或long long int 一般是64位~~
你觉得long long 还不够用嘛  
作者: 4399APPLE    时间: 2014-2-11 19:36
李掌柜 发表于 2014-2-11 17:37
long 或  long int 一般是32位..
long long或long long int 一般是64位~~
你觉得long long 还不够用嘛; ...

你看过错误提示了没??
作者: 李掌柜    时间: 2014-2-11 19:59
4399APPLE 发表于 2014-2-11 19:36
你看过错误提示了没??

有提示错误?这位同学,这个是数据溢出,楼主给出的数据类型(int)太小,,  你给出的"long long long a;"
有这种数据类型么??
如果不知道llong long 去看看有关C 99标准.

二小你怎么看~~  

作者: rosynirvana    时间: 2014-2-14 02:18
李掌柜 发表于 2014-2-11 19:59
有提示错误?这位同学,这个是数据溢出,楼主给出的数据类型(int)太小,,  你给出的"long long long a;"
有 ...

他的意思是让看看gcc的那个彩蛋一样的错误提示,好像是
"long long long" is too long for gcc
所以他一开始就说“注意看错误提示”
作者: 1233333    时间: 2014-2-17 13:16
感谢你们的回答,但,楼主我表示看不懂!
作者: cad20020601    时间: 2014-2-23 09:06
1233333 发表于 2014-2-17 13:16
感谢你们的回答,但,楼主我表示看不懂!

额,看不懂。。。
好吧。。。你赢了。。
用啊哈磊的话说,int是一个小房子对吧?假如它的体积只有3立方米,你却硬要把9立方米的东西塞进去,那房子不得撑爆了?所以数据就出现了错误。
而long long int 么,就是给了你一个19立方米的房子,你那9立方米的东西不就能塞进去了?当然,如果你又有一个东西,它有19.1立方米这么大,房子又被你撑爆了,那数据就又错误了。

还有:恭喜你获得了成就:【强拆队】
作者: 1531590867    时间: 2014-2-25 21:09
BBS如此美丽~ 我陶醉了 以前都在魔方格刷帖 在这里面刷啊~ 还要是有技术含量的!
作者: 1233333    时间: 2014-3-2 11:01
cad20020601 发表于 2014-2-23 09:06
额,看不懂。。。
好吧。。。你赢了。。
用啊哈磊的话说,int是一个小房子对吧?假如它的体积只有3立方 ...

感谢你老兄,这下明白多了!
作者: cad20020601    时间: 2014-3-2 11:11
1233333 发表于 2014-3-2 11:01
感谢你老兄,这下明白多了!

         




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2