自己写了代码!编译后没结果,看答案后照抄编译错误!找半天看不出来!
自己写了代码!编译后没结果,看答案后照抄编译错误!找半天看不出来! 参考https://www.cnblogs.com/52php/p/5681100.html 加了-lm可以编译了·但是数据显示不正确?? 改完之后重新编译生成新文件了嘛?那个程序我运行了下是对的 可以编译以后你把 weight,和temp的值先附0,试一下
编译的时候把运行窗口关了再编译,有时候编译不通过是因为程序在运行造成的 现在是可以编译,编译的时候加-lm就可以编译了·但是数据溢出了。我显示不了这么多位数字! 这样?那你试试把long long改为bigint
你也可以试试double 你把执行结果拿出来 #include<stdio.h>
int main()
{
unsigned long long temp = 1;
unsigned long long sum = 0;
float weight;
for(int i=0; i<64; i++)
{
sum+=temp;
temp *= 2;
}
weight = sum / 25000.0;
//我就不输打印的中文了,只打印数字
printf("%llu\n", sum);
printf("%llu\n"), weight);
return 0;
} 我把程序改了,这个打印我的程序编译数据很早就溢出了·但是 unsigned long long 不是8个字节吗?可以存20位数字吗?我只能存放10位就满了?是什么问题? TCY 发表于 2018-12-13 12:40
这个代码我编译不通过!{:5_99:} 丶忘却的年少o 发表于 2018-12-12 09:55
改完之后重新编译生成新文件了嘛?那个程序我运行了下是对的
我重新新建一个.C文件,重新抄写,然后现在结果在很早的时候就溢出了·我的数值只能显示10位数!
z14928541 发表于 2018-12-13 21:51
我重新新建一个.C文件,重新抄写,然后现在结果在很早的时候就溢出了·我的数值只能显示10位数!
我是VS运行的,没问题。不过我看了pow函数定义,好像是返回double类型。你在pow前面强转一下:
tmp = (unsigned long long)pow(2, i);
要是还不行我也不知道了…… 丶忘却的年少o 发表于 2018-12-14 09:31
我是VS运行的,没问题。不过我看了pow函数定义,好像是返回double类型。你在pow前面强转一下:
要是还 ...
绝对没问题! TCY 发表于 2018-12-15 17:43
绝对没问题!
我也这么觉得。只是楼主很着急{:10_334:} 测一下sizeof(sum)你电脑上是多少字节。 成功了!重点是改了%llu. 原来是%11u就可以了
页:
[1]