搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 100000*99999 结果竟然成了1409965408,大家帮帮忙
标题:
100000*99999 结果竟然成了1409965408,大家帮帮忙
只看楼主
zhenhang
等 级:
新手上路
帖 子:18
专家分:2
注 册:2009-2-3
结帖率:
80%
楼主
问题点数:0 回复次数:8
100000*99999 结果竟然成了1409965408,大家帮帮忙
#include<stdio.h>
int main()
{
int i;long long j=0;
i=100000;j=i*(i-1);
printf("%d\n",sizeof(long long));
printf("%ld\n",j);
}
代码在dev-c++下能顺利编译通过
执行结果:8
1409965408
搜索更多相关主题的帖子:
long
2012-04-17 22:59
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6809
专家分:42393
注 册:2010-12-16
第
2
楼
得分:0
j=i*(i-1);
问题在这,在计算i*(i-1)时候,会先结果用int来保存的,这样结果就截断了,win7有个计算器可以验证你的结果,呵呵
主要先算在程序员计算机 和双字(int 为4个字节 也就是双字)
我行我乐
我的博客:
http://blog.yuccn. net
2012-04-18 00:25
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6809
专家分:42393
注 册:2010-12-16
第
3
楼
得分:0
如果想结果正确,吧int i;改成longlong类型就行了
我行我乐
我的博客:
http://blog.yuccn. net
2012-04-18 00:26
zhenhang
等 级:
新手上路
帖 子:18
专家分:2
注 册:2009-2-3
第
4
楼
得分:0
程序改为下面代码:
#include<stdio.h>
int main()
{
long long i;long long j=0;
i=100000;j=i*i;
printf("%d\n",sizeof(long long));
printf("%lld\n",j);
}
结果为 1410065408
在gcc下编译的
2012-04-19 12:47
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6809
专家分:42393
注 册:2010-12-16
第
5
楼
得分:0
我行我乐
我的博客:
http://blog.yuccn. net
2012-04-20 00:45
sunnysab
来 自:安徽安庆
等 级:
论坛游民
帖 子:38
专家分:67
注 册:2011-8-11
第
6
楼
得分:0
类型小了,改一下
快乐一些~
2012-04-20 18:05
computeryuya
等 级:
新手上路
帖 子:9
专家分:7
注 册:2012-3-28
第
7
楼
得分:0
汗呢 我的vc6.0居然不认识 long long - - 难道vc 太老了。。
2012-04-21 16:06
姚杰
等 级:
侠之大者
威 望:
1
帖 子:169
专家分:477
注 册:2010-6-1
第
8
楼
得分:0
数字太大,溢出啦。。。。。
持之以恒,别留遗憾,加油
2012-04-21 18:10
longwu87
等 级:
论坛游民
帖 子:14
专家分:69
注 册:2011-7-28
第
9
楼
得分:0
int64
2012-04-22 00:03
9
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-366047-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.126280 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved