gpt4 book ai didi

c - 使用不同的格式说明符更快的输出

转载 作者:行者123 更新时间:2023-11-30 19:35:57 24 4
gpt4 key购买 nike

在下面的示例中

    #include <stdio.h>
#include <math.h>
int main(void) {
int t,n,x,i;
long int num;
scanf("%d",&t);
while(t--){
scanf("%d",&n);num=0;
for(i=1;i<=n;i++){
scanf("%d",&x);
num=num+(x*pow(10,(n-i)));
}
printf("%ld\n",num);
}
return 0;
}

样本一组输入耗时 0.03 秒。
当我在 printf 中将格式说明符从 %ld 更改为 %d 时,对于相同的值和输入数量,示例花费了 0.02 秒的时间。

在这两种情况下,num 都是 long int 类型,并以该形式进行计算。即使两种情况的结果大小相同,为什么会发生这种情况?

最佳答案

您的计时结果有多精确?如果您使用 time 命令,它只提供两位小数,因此 0.030.02 之间的差异并不显着(例如,在四舍五入之前实际上可能是 0.025000010.02499999)。使用更长的输入并重复测试几次,对结果求平均值,并查看标准差以查看差异是否具有统计显着性。

也就是说,根据您的平台,intlong int 也可能具有相同的大小,从而使两者等效。如果不是,则取决于您平台上的 C 库是否实际上使用与普通整数相比不同的例程来解析长整数。我希望它在内部总是使用相同的例程,即最长可能的整数大小的例程,并且只是将结果转换为请求的类型。

关于c - 使用不同的格式说明符更快的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41910309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com