我是靠谱客的博主 忧虑鸭子,这篇文章主要介绍VS Code写C语言输出long double类型数据不正确的问题,现在分享给大家,希望可以做个参考。

VS Code写C语言输出long double类型数据不正确的问题


在学习《C Primer Plus》一书时遇到一个例题

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h> int main(void) { float aboat = 32000.0; double abet = 2.14e9; long double dip = 5.32e-5; printf("%f can be written %en", aboat, aboat); printf("And it's %a in hexadecimal, powers of 2 notationn", aboat); printf("%f can be written %en", abet, abet); printf("%Lf can be written %Len", dip, dip); return 0; }

利用VS Code进行调试会发现变量dip的输出不正确。在确认是使用C99/C11,以及断点检查确认5.23e-5被赋值给变量dip之后,还是存在输出不正确的问题。
在查阅相关资料之后,发现有使用Dev-C++也存在相同的问题,尝试使用别人给出的解决方案之后,问题立马被解决了。

解决方案:
在代码的最开始加上一行

复制代码
1
2
#define __USE_MINGW_ANSI_STDIO 1

问题产生原因:
VS Code默认使用了系统crt的printf函数。

相关文章:知乎 - long double 怎样输出?

最后

以上就是忧虑鸭子最近收集整理的关于VS Code写C语言输出long double类型数据不正确的问题的全部内容,更多相关VS内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(88)

评论列表共有 0 条评论

立即
投稿
返回
顶部