返回介绍

5.1 数字分隔符

发布于 2024-08-19 12:44:37 字数 2449 浏览 0 评论 0 收藏 0

奇怪的是,数字分隔符引起了最激烈的争论。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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文