gpt4 book ai didi

c - printf 上错误的 clock_t 输出值

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:29 26 4
gpt4 key购买 nike

我有以下代码:

#include <stdio.h>
#include <time.h>

clock_t a;

void f(void) {
a = clock();
printf("in f(): %g\n", a);
}

void main(void) {
f();
printf("in main(): %g\n", a);
}

使用 MinGW gcc 编译并运行它会产生类似于以下的输出:

in f(): -1.#QNAN
in main(): 1.49845e-307

问题:为什么a包含-1.#QNAN?虽然我明白what it means ,我看不出代码出了什么问题。起初,我推测它与 clock_t 类型的打印格式说明符有关,但来自 this stackoverflow thread 的答案另有说法。甚至为了确定,我快速挖掘了标准 header 并发现 clock_tlong 的类型定义(至少在我的机器上),这意味着在显示值(value)方面没有错。这可能是 clock() 函数中的错误吗?


编辑:在阅读评论后,我意识到我的实际问题是我非常期待 a 是一些超小的浮点值,以至于我忘记了 clock_t,正如我所说,在我的机器上定义为 long 类型。抱歉打扰了,谢谢大家的宝贵时间。

最佳答案

请始终查看您的编译器警告:

warning: format specifies type 'double' but the argument has type
'clock_t' (aka 'unsigned long') [-Wformat]
printf("in f(): %g\n", a);
~~ ^
%lu

编译器甚至会告诉您如何修复。简而言之,当数据为 unsigned long 时,您不能将 double 指定给 printf()

关于c - printf 上错误的 clock_t 输出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48770177/

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