【发布时间】:2023-03-20 19:20:01
【问题描述】:
我正在尝试以较小的程序为例来找出为什么会出现更大的问题。这个较小的程序不起作用,让我相信这是我对功能的理解有缺陷。
据我(曾经)相信,以下程序应该初始化一个最多包含 30 个字符的字符串,然后将数字“5”取为九位有效数字,并将其转换为该字符串。然后程序应打印值“5.00000000”。但是,程序会打印值 7.96788(...)。这是为什么呢?
#include <stdio.h>
int main()
{
char word[30];
sprintf(word, "%.9g", 5);
printf(word);
return 0;
}
【问题讨论】:
-
您在调用 printf 时不带格式字符串参数?
-
您的程序导致未定义的行为 - 任何事情都可能发生。
-
根据您使用的编译器,启用所有警告(例如使用
-Wall用于 gcc)应该会在此处给您一个警告,告诉您究竟出了什么问题。