为什么在阅读时scanf()需要l" %lf" double,何时printf()可以使用" %f",无论其参数是a double还是a float?
示例代码:
double d;
scanf("%lf", &d);
printf("%f", d);
Run Code Online (Sandbox Code Playgroud) 表达这个问题的另一种方式可能是“如何在 printf 中结束格式说明符”
如果我想100us使用以下代码以这种格式打印微秒......
long microseconds = 100L;
printf("%lus", microseconds);
Run Code Online (Sandbox Code Playgroud)
只打印,100s因为 theu与 the 组合%l,并且它将格式说明符解释为 anunsigned long而不是 along
c printf format-specifiers conversion-specifier length-modifiers
请考虑以下代码:
#include <stdio.h>
#include <inttypes.h>
void main(void)
{
int32_t a = 44;
fprintf(stdout, "%d\n", a);
fprintf(stdout, "%"PRId32"\n", a);
}
Run Code Online (Sandbox Code Playgroud)
什么时候使用%d更好,"%"PRId32什么时候使用会更好?这两种格式字符有何不同?这是否与int32_t您的硬件/机器上的typedeffed有关?