为什么我可以在 C++ 中用撇号分隔数字,但不能用 C 分隔数字

Why can I separate digits with an apostrophe in C++ but not C?

本文关键字:分隔 数字 但不能 我可以 C++ 为什么      更新时间:2023-10-16

我在代码示例中看到了这个向量声明

std::vector<double> v(10'000'007, 0.5);

这将生成大小为 10000007 的向量,因此必须将其转换为size_type。我也可以将其分配给类型 size_t 的变量,这并不奇怪。同样的声明无法用 C 编译,但是,我收到一个错误

#include <stdio.h>
void main()
{
unsigned x = 10'000'007;
printf("x: %dn", x);
}
warning: multi-character character constant [-Wmultichar] unsigned x = 10'000'007;
error: expected ‘,’ or ‘;’ before 'x303030'

这种样式使阅读声明更容易,但是是否真的在C++中添加了规则来使此编译?

在 C++14 中,整数文本已更新为允许使用可选的'分隔符。

参考 [lex.icon]

十进制文字
   非零位
   十进制文字选择数字

因此,您展示的代码片段不会以低于 C++14 的任何C++标准进行编译,并且 C 语言还没有此规则。