【问题标题】:initialize long long with value starting with 0 leads to strange values [duplicate]以0开头的值初始化long long会导致奇怪的值[重复]
【发布时间】:2018-07-24 14:16:50
【问题描述】:

这里发生了什么?

long long value;
value = 001111011112;

在 Visualstudio 调试中,显示值为 153358922。

如果数字不是以 0 开头的,那么一切都是正确的……

有什么建议可以继续使用我的初始化风格吗?

【问题讨论】:

  • 你知道怎么写八进制文字吗???
  • ups...发现发生了什么...八进制。但仍在寻找一种解决方案来保持我的前导零。
  • 用十六进制写
  • 没有。前导零是没有意义的,因为它不会影响值。
  • 如果你必须显示001111011112,那么你需要将它存储在一个字符串中

标签: c++


【解决方案1】:

在 C++ 中,以 0 开头的数字是八进制(以 8 为基数)文字。

如果你想用前导零打印这个值,你可以这样做:

long long value;
value = 1111011112;
cout << setw(12) << setfill('0') << value;

【讨论】:

  • 请不要回答明显的重复,它们应该被投票/标记为关闭。
猜你喜欢
  • 2021-02-17
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 2018-03-15
  • 2016-06-28
  • 2012-05-26
  • 2011-02-05
  • 2021-09-23
相关资源
最近更新 更多