C++14 将数字分隔符的概念引入到文字中,大致如下:3'141'592'653'589
。现在这是一个great具有可读代码的功能,但我想知道它是否允许引号beforea 的数字部分0x/0b
- 类型文字。在我看来,这:
unsigned int topThreeBits = 0b'1110'0000;
unsigned int hexNum = 0x'dead'beef;
比第一个更具可读性without前导分隔符:
unsigned int topThreeBits = 0b1110'0000;
unsigned int hexNum = 0xdead'beef;
因为它清楚地描绘了数字的基数。
由于我还没有 C++14 编译器,因此我需要以某种方式确认它是否允许这样做。
我知道这对于无前缀的数字没有意义,例如'123'456
,特别是因为解析器不知道它是否意味着char
变量或数字文字。
但是,对于带前缀的文字,我看不出对于第一个标记的含义有任何混淆'
到达——0x/0b
已经规定它将是一个数字文字。
如果我们从语法来看C++14 标准草案:N4140 https://github.com/cplusplus/draft/blob/master/papers/n4140.pdf部分2.14.2
[词法图标],不允许紧跟在十六进制或二进制文字的基本指示符之后:
binary-literal:
0b binary-digit
0B binary-digit
binary-literal ’opt binary-digit
[...]
hexadecimal-literal:
0x hexadecimal-digit
0X hexadecimal-digit
hexadecimal-literal ’opt hexadecimal-digit
尽管如此,八进制文字确实允许在基本指示符之后使用分隔符:
octal-literal:
0
octal-literal ’opt octal-digit
我们还可以使用提供 C++14 编译器的在线编译器之一进行检查,例如Coliru http://coliru.stacked-crooked.com/a/42736b1305902325 or Wandbox http://melpon.org/wandbox/permlink/bAOmGLMQyO7djn41.
跟踪这一变化的进化工作组问题是第 27 期:N3781 单引号作为数字分隔符、N3661、N3499 数字分隔符、N3448 无痛数字分隔符 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4422.html#27。我没有看到这个设计决定的明显理由,也许这只是字面解释数字分隔符.
请注意,我们可以找到标准草案列表在哪里可以找到当前的 C 或 C++ 标准文档? https://stackoverflow.com/q/81656/1708801.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)