在C++中,const int x = 5000; 和 const int x = 50'00; 有什么区别?

4
以下C++代码有何不同之处?
const int x = 5000;
const int x = 50'00;

第二个需要C++14或更高版本。 - Jarod42
2个回答

10

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


5
请注意,不同的文化对数字的分组方式不同。特别是在印度,1'000'000'000'000会写作1'00'000'00'00'000。因此,语言本身并不强制分组。 - Amadan
1
@Amadan 能做到 - 当然可以,但是否值得推荐则存在争议... 这样做会显著降低代码的可读性,对于那些不遵循这种非常特定的文化的人来说,就像使用非英语函数/变量名称一样... - Aconcagua

8
自C++14起,你可以在整数字面量中的'任何地方(除了开头或结尾或紧随八进制前导零以外的基数标识符之后)放置一个数字分隔符。这样做是为了让代码更易读,例如:
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

理由与允许非英语函数/变量名称的理由几乎相同(除了后者更难检测...)。我不认为在非英语变体中使用任何一种(数字表示法/名称)是可取的... - Aconcagua

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接