【问题标题】:What is the difference - const int x = 5000; and const int x = 50'00; in C++?有什么区别 - const int x = 5000;和 const int x = 50'00;在 C++ 中?
【发布时间】:2018-06-18 07:26:46
【问题描述】:

下面的c++代码有什么区别-

const int x = 5000;
const int x = 50'00;

【问题讨论】:

  • 其次需要C++14或更高版本。

标签: c++ constants variable-assignment


【解决方案1】:

50'00 使用在 C++14 中添加的digit separator。该数字将解析为5000,唯一的区别是它可能更易于阅读。通常您会使用数字分隔符来分隔千位,例如1'000'000,但您可以在数字中的任何位置使用它。

【讨论】:

  • (请注意,不同的文化以不同的方式分隔数字。值得注意的是,在印度,1'000'000'000'000 将写作1'00'000'00'00'000。因此,该语言不强制分组。)
  • @Amadan 被允许 - 当然,值得推荐吗?至少是有争议的...对于不遵守这种非常特定文化的人来说,它极大地降低了代码的可读性,就像使用非英语函数/变量名一样...
【解决方案2】:

从 C++14 开始,您可以将 数字分隔符 ' anywhere 放在整数字面量内(除了开头或结尾或紧跟在基本指示符不包括八进制前导零 - 否则您会与 多字符文字 发生冲突。)

目的是使代码更具可读性:例如

const int x = 5'000;

或者,使用印度符号(解释了任何地方的基本原理)

const auto x = 12'34'567;

或者,十六进制

const auto x = 0xee'ef;

请注意,1e3 之类的 类型double,它可能会咬你一口,尤其是在 for 循环中用作计数器时。

参考:https://en.cppreference.com/w/cpp/language/integer_literal

【讨论】:

  • 基本原理与允许非英语函数/变量名称几乎相同(除了后者更难检测......)。我不认为在非英语变体中使用两者中的任何一个(数字符号/名称)是可取的......
猜你喜欢
  • 2021-06-21
  • 2010-11-11
  • 1970-01-01
  • 2017-01-30
相关资源
最近更新 更多