文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
5.1 数字分隔符
奇怪的是,数字分隔符引起了最激烈的争论。Lawrence Crowl 反复提出了各种选项的分析 [Crowl 2013]。包括我在内的许多人都主张使用下划线作为分隔符(和好几种其他语言一样)。例如:
auto a = 1_234_567; // 1234567
不幸的是,人们正在使用下划线作为用户定义字面量后缀的一部分:
auto a = 1_234_567_s; // 1234567 秒
这可能会引起歧义。例如,最后一个下划线是多余的分隔符还是后缀的开始?令我惊讶的是,这种潜在的歧义使下划线对很多人 来说变得难以接受。其中一个原因是,为了免得程序员遇到意想不到的结果,库小组为标准库保留了不以下划线开头的后缀。经过长时间的讨论,包括全体委员会 (约 100 人)的辩论,我们一致同意使用单引号:
auto a = 1'234'567; // 1234567(整数)
auto b = 1'234'567s; // 1234567 秒
尽管有严厉的警告指出使用单引号会破坏无数的工具,但实际效果似乎不错。单引号由 David Vandevoorde 提出 [Crowl et al. 2013]。他指出,在一些国家,特别是在瑞士的金融写法中,单引号被当作分隔符来使用。
我的另一个建议,使用空白字符,则一直没有得到认同:
int a = 1 234 567; // 1234567
int b = 1 234 567 s; // 1234567 秒
许多人认为这个建议是一个与在愚人节发表的老文章 [Stroustrup 1998] 有关的笑话。而实际上,它反映了一个旧规则,即相邻字符串会被连接在一起,因而 "abc" "def"
表示 "abcdef"
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论