我看到这个矢量声明一个代码示例中
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: %d\n", x);
}
warning: multi-character character constant [-Wmultichar] unsigned x = 10'000'007;
error: expected ‘,’ or ‘;’ before '\x303030'
这风格使得它更容易阅读的声明,但没有真正加入到C ++的规则,使这个编译?
答案 0 :(得分:7)
在C ++ 14中,更新了整数常量以允许使用可选的'
分隔符。
请参阅[lex.icon]
十进制文字:
非零位数
小数’
opt 位
因此,您显示的代码段将无法在C ++ 14以下的任何C ++标准中进行编译,并且C语言还没有此规则。