标签: format-specifiers

正确的printf格式说明符为double

doubleprintf中正确的格式说明符是什么?是它%f还是它%lf?我相信它%f,但我不确定.

代码示例

#include <stdio.h>

int main()
{
   double d = 1.4;
   printf("%lf", d); // Is this wrong?
}
Run Code Online (Sandbox Code Playgroud)

c floating-point double printf format-specifiers

451
推荐指数
5
解决办法
96万
查看次数

如何使用printf格式化unsigned long long int?

#include <stdio.h>
int main() {
    unsigned long long int num = 285212672; //FYI: fits in 29 bits
    int normalInt = 5;
    printf("My number is %d bytes wide and its value is %ul. A normal number is %d.\n", sizeof(num), num, normalInt);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

My number is 8 bytes wide and its value is 285212672l. A normal number is 0.
Run Code Online (Sandbox Code Playgroud)

我认为这个意想不到的结果是来自打印unsigned long long int.你怎么printf()unsigned long long int

c syntax printf format-specifiers long-long

356
推荐指数
8
解决办法
73万
查看次数

如何在C中打印"unsigned long"?

我永远无法理解如何unsigned long在C中打印数据类型.

假设unsigned_foounsigned long,然后我尝试:

  • printf("%lu\n", unsigned_foo)
  • printf("%du\n", unsigned_foo)
  • printf("%ud\n", unsigned_foo)
  • printf("%ll\n", unsigned_foo)
  • printf("%ld\n", unsigned_foo)
  • printf("%dl\n", unsigned_foo)

而且他们都打印了某种-123123123数字而不是unsigned long我的数字.

c printf unsigned format-specifiers long-integer

319
推荐指数
7
解决办法
65万
查看次数

193
推荐指数
4
解决办法
13万
查看次数

我该如何打印off_t和size_t等类型?

我正在尝试打印类似off_tsize_t.什么是正确的占位符printf() 是可移植的

或者是否有完全不同的方式来打印这些变量?

c portability format-specifiers

141
推荐指数
3
解决办法
13万
查看次数

为什么printf具有单个参数(没有转换说明符)?

在我正在阅读的一本书中,写printf了一个单一的参数(没有转换说明符)被弃用了.它建议替代

printf("Hello World!");
Run Code Online (Sandbox Code Playgroud)

puts("Hello World!");
Run Code Online (Sandbox Code Playgroud)

要么

printf("%s", "Hello World!");
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么printf("Hello World!");是错的?书中写道它包含漏洞.这些漏洞是什么?

c security printf format-specifiers puts

99
推荐指数
10
解决办法
1万
查看次数

printf中的"%.*s"是什么意思?

我有一个代码片段,其中有一个

printf("%.*s\n")
Run Code Online (Sandbox Code Playgroud)

什么%.*s意思?

c printf format-specifiers

98
推荐指数
4
解决办法
7万
查看次数

平台无关size_t c中的格式说明符?

我想size_t在C中打印出一个类型的变量,但似乎size_t在不同的体系结构上别名为不同的变量类型.例如,在一台计算机(64位)上,以下代码不会抛出任何警告:

size_t size = 1;
printf("the size is %ld", size);
Run Code Online (Sandbox Code Playgroud)

但在我的另一台机器(32位)上面的代码会产生以下警告消息:

警告:格式'%ld'需要类型'long int*',但参数3的类型为'size_t*'

我怀疑这是由于指针大小的不同,所以在我的64位机器size_t上别名为a long int("%ld"),而在我的32位机器size_t上别名为另一种类型.

是否有专门用于的格式说明符size_t

c size-t platform-independent format-specifiers format-string

76
推荐指数
2
解决办法
4万
查看次数

printf的h和hh修饰符的用途是什么?

除了%hn%hhn(指定hhh指定指向对象的大小),格式说明符的hhh修饰符有printf什么意义?

由于标准要求的默认促销适用于可变函数,因此不可能将类型charshort(或其任何有符号/无符号变体)的参数传递给printf.

根据7.19.6.1(7),h修饰符:

指定以下d,i,o,u,x或X转换规范适用于short int或unsigned short int参数(该参数将根据整数提升进行提升,但其值应转换为short int或打印前的unsigned short int); 或者后续的n转换规范适用于指向short int参数的指针.

如果参数实际上是类型shortunsigned short,则促销int后转换回shortunsigned short将产生与促销相同的int而不进行任何转换.因此,对于类型的参数shortunsigned short,%d,%u等应给予相同的结果到%hd,%hu等.(并且同样地对于char类型和hh).

据我所知,h或者hh修饰符可能有用的唯一情况是当参数将其传递int到范围之外时,short或者unsigned short …

c printf promotions variadic-functions format-specifiers

55
推荐指数
3
解决办法
3万
查看次数

%*s格式说明符是什么意思?

在我必须维护的一些代码中,我看到了一个格式说明符%*s.任何人都可以告诉我这是什么以及为什么使用它?

它的用法示例如下:

fprintf(outFile, "\n%*s", indent, "");
Run Code Online (Sandbox Code Playgroud)

c printf format-specifiers

44
推荐指数
3
解决办法
4万
查看次数