gpt4 book ai didi

c - 格式字符串未使用数据参数 - 输出长整型

转载 作者:行者123 更新时间:2023-11-30 16:49:32 24 4
gpt4 key购买 nike

好吧,这是一个 C 程序...即使我已经正确放置了它,我还是遇到了这个问题。长毫秒,在打印中我有“l”。现在,x 是一个全局 int 变量,用户通过命令行参数输入 x,然后 atoi() 作为参数。

此问题发生在函数中。我想知道我是否输出错误。在尝试输出之前将 int x 设置为这个 long ms 变量时,我是否应该进行类型转换?我很困惑并试图输出毫秒。

    struct timespec now;
clock_gettime(CLOCK_REALTIME, &now);
long ms;
x = ms;
ms = round(now.tv_nsec / 1.0e6);

fprintf(stdout, "l: flip\n", ms);

最佳答案

我已经用我所看到的内容注释了您的代码。

struct timespec now;
clock_gettime(CLOCK_REALTIME, &now);
long ms;
x = ms;
// <== this is assigning a variable 'ms' to the variable 'x'
// however, the variable 'ms' is not initialized
// this will cause the compiler to raise a warning message
// about using an uninitialized variable
// this is (for the above reason) undefined behavior

ms = round(now.tv_nsec / 1.0e6);
// <-- initialized the variable 'ms'
// but it is too late for the prior statement
// AND the compiler will not be happy about the 'implied'
// conversion from the returned type from 'round()'
// which is 'double' to the type 'long int' of the variable 'ms'
// The compiler will be happy if the line is written like this:
ms = (long int)round( now.tv_nsec / 1.0e6 );


fprintf(stdout, "l: flip\n", ms);
// <-- will cause the compiler to complain, as you already know

如果代码是:

fprintf(stdout, "%l: flip\n", ms); 
// <-- will also cause the compiler to complain about a invalid format specifier

如果代码使用与变量“ms”(long int)的“类型”匹配的有效格式说明符

fprintf(stdout, "%ld: flip\n", ms); 
// <-- now compiler happy

格式说明符“%ld”表示“长整数”

fprintf()(或 printf())的手册页告诉您所有可用的有效格式说明符及其用途。

关于c - 格式字符串未使用数据参数 - 输出长整型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42546617/

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