c - 在(好的)旧 printf 的上下文中,长度子说明符“l”有什么影响吗?
问题描述
问题是关于(好的)旧 printf 函数。长度子说明符“l”记录在名为“说明符”的表中:
https://www.cplusplus.com/reference/cstdio/printf/
用于解释长度子说明符“l”与说明符“f F e E g G a A”组合的单元格是空白的。这是否意味着,例如“%le”的行为总是像“%e”?我努力寻找一个例子,我在“%le”输出和“%e”输出之间得到了区别……但没有任何成功。会不会是“%le”和“%e”在 printf-context 中产生了大致相同的输出?我正在使用 Visual Studio 版本 16.11.5 和 MSC 版本 19.29.30136(MSC_FULL_VER 是“192930136”)。这是我的代码:
#include <iostream>
//to get the MSC-compiler version
#define XSTR(x) STR(x)
#define STR(x) #x
#pragma message("_MSC_FULL_VER:")
#pragma message(XSTR(_MSC_FULL_VER))
int main()
{
double d = 1.123456789123456789123456789;
long double ld = static_cast<long double>(d);
printf("%.20e\n" , d);
printf("%.20le\n", d);
printf("%.20le\n", ld);
printf("%.20e\n" , ld);
return 0;
}
这是相应的输出:
1.12345678912345681155e+00
1.12345678912345681155e+00
1.12345678912345681155e+00
1.12345678912345681155e+00
解决方案
2018 C 标准在第 7.21.6.1 条第 7 段中规定l
:
… 对后面
a
的 ,A
,e
,E
,f
,F
,g
, 或G
转换说明符没有影响。
(省略了上面使用的“...”的文本指定了l
对其他说明符的影响。)
推荐阅读
- c++ - 如何设置嵌套模板参数?
- javascript - Javascript - Codepen 试图使用数组更改我的 html 内容的顺序我的函数正在工作但不是很好我不明白为什么
- c - Dev-C++ 未编译
- php - 将 laravel 应用程序部署到共享主机并得到“未指定应用程序加密密钥”。错误
- c# - WPF窗口左上角不透明
- windows - curl: (3) URL 位置 1 中不匹配的大括号:
- python - (IndexError: list assignment index out of range) 错误索引数组
- assembly - 在汇编中读取二进制文件
- node.js - Node-express 承诺链和常见的 catch 语句
- reactjs - Emotion CSS-in-JS ReferenceError:未定义导出