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

概述

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


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

#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++也存在相同的问题,尝试使用别人给出的解决方案之后,问题立马被解决了。

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

#define __USE_MINGW_ANSI_STDIO 1

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

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

最后

以上就是忧虑鸭子为你收集整理的VS Code写C语言输出long double类型数据不正确的问题的全部内容,希望文章能够帮你解决VS Code写C语言输出long double类型数据不正确的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部