我在代码示例中看到了这个向量声明
std::vector<double> v(10'000'007, 0.5);
Run Code Online (Sandbox Code Playgroud)
它生成一个大小为10000007的向量,因此必须将其强制转换为size_type.我也可以将它分配给一个类型的变量,size_t这并不奇怪.同样的声明不能在C中编译,但是,我收到一个错误
#include <stdio.h>
void main()
{
unsigned x = 10'000'007;
printf("x: %d\n", x);
}
warning: multi-character character constant [-Wmultichar] unsigned x = 10'000'007;
error: expected ‘,’ or ‘;’ before '\x303030'
Run Code Online (Sandbox Code Playgroud)
这种风格使得阅读声明变得更容易,但实际上是否有一条规则添加到C++中进行编译?
在C++ 14中,更新了整数文字以允许可选的'分隔符.
参考[lex.icon]
decimal-literal:
非零位
十进制文字的’opt数字
因此,您显示的代码片段不会在C++ 14下面的任何C++标准中编译,并且C语言还没有这个规则.