格式字符串的转换规范中引号的含义是什么?
What is the meaning of a quote in the conversion specification of a format string?
我发现我们可以在格式字符串的转换规范中使用一个(或多个)引号。例如:
void f(int i)
{
printf("%'d\n", i);
}
这段代码编译得很好,并且在没有引号的情况下表现得完全一样。
我想知道这句话是什么意思。它会对 printf
函数的行为产生影响吗?如果不允许,为什么允许这样做?
我在 cppreference 中没有找到相关信息。
这是记录在案的 -
整数用逗号表示
例如
1,000
没有
1000
如果您所在的地区在逗号之间使用 3 位数字
Cppreference 记录了 C 标准。撇号是对 POSIX 记录的 C 标准的扩展。来自 POSIX fprintf:
The flag characters and their meanings are:
'
(The <apostrophe>.) The integer portion of the result of a decimal conversion ( %i, %d, %u, %f, %F, %g, or %G ) shall be formatted with thousands' grouping characters. For other conversions the behavior is undefined. The non-monetary grouping character is used.
我发现我们可以在格式字符串的转换规范中使用一个(或多个)引号。例如:
void f(int i)
{
printf("%'d\n", i);
}
这段代码编译得很好,并且在没有引号的情况下表现得完全一样。
我想知道这句话是什么意思。它会对 printf
函数的行为产生影响吗?如果不允许,为什么允许这样做?
我在 cppreference 中没有找到相关信息。
这是记录在案的 - 整数用逗号表示
例如
1,000
没有
1000
如果您所在的地区在逗号之间使用 3 位数字
Cppreference 记录了 C 标准。撇号是对 POSIX 记录的 C 标准的扩展。来自 POSIX fprintf:
The flag characters and their meanings are:
'
(The <apostrophe>.) The integer portion of the result of a decimal conversion ( %i, %d, %u, %f, %F, %g, or %G ) shall be formatted with thousands' grouping characters. For other conversions the behavior is undefined. The non-monetary grouping character is used.