gpt4 book ai didi

c - 使用浮点转换代码 (%f) 打印整数?

转载 作者:行者123 更新时间:2023-11-30 20:08:33 25 4
gpt4 key购买 nike

所以我一直在研究 C 编程并买了一本书。章节末尾有一个问题:

编写一个程序,定义五个整型变量并将它们初始化为 1、10、100、1000、10000。然后使用十进制转换代码 (%d) 将它们打印在以空格字符分隔的单行上,并在包含浮点转换代码 (%f) 的嵌套行。请注意结果之间的差异。你如何向他们解释?

现在,我的问题是如何对定义为 int 的数字使用 float 转换代码?

这是我到目前为止所写的内容:

#include <stdio.h>

int main(void)
{
int one = 1;
int ten = 10;
int hundred = 100;
int thousand = 1000;
int tenThous = 100000;

printf("%d %d %d %d %d \n", one, ten, hundred, thousand, tenThous);
printf("%f %f %f %f %f \n", one, ten, hundred, thousand, tenThous);

return 0;
}

按照他们描述问题的方式,我认为我必须使用我定义的 int 变量。制作一组新的数字并将它们声明为 float 很容易,但我不认为这正是他们所要求的。

编译时收到的错误消息是:

numPrint.c:12:33: warning: format specifies type 'double' but the argument has
type 'int' [-Wformat]
printf("%f %f %f %f %f \n", one, ten, hundred, thousand, tenThous);
~~ ^~~
%d

它遍历所有 int 变量,表示格式指定为“double”并且使用的变量是“int”

有办法做到这一点吗?

最佳答案

Is there a way to do this?

已经做到了。这些消息是警告;他们不会中止编译。

或者您可能会问是否可以在不引发警告的情况下执行此操作?你当然可以。该消息告诉您特定诊断与哪个警告标志相关:-Wformat。您可以通过传递 -Wno-format 作为命令行选项来禁用这些警告。

但你不应该。

这些警告告诉您代码中存在真正的问题。正如它所解释的,%f 描述符期望相应的参数具有 double 类型。另外,float 也可以工作,因为它在这个特定的上下文中会自动转换为 double,但如果参数具有不同的类型,则行为是未定义的。您可以将参数转换为 double 类型,但这不是我解释文本要求您执行的操作。

你应该做什么?把书烧掉,买一本更好的。真的。 C 教科书没有理由建议你按照你的教科书的建议去做。即使只是措辞不佳,你也不得不想知道还有什么其他臭东西在那里等着你。烧掉这本书而不是归还或赠送它构成了一种社区服务。

关于c - 使用浮点转换代码 (%f) 打印整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56606918/

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