以0开头的值初始化long long会导致奇怪的值[重复]

Posted

技术标签:

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

这里发生了什么?

long long value;
value = 001111011112;

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

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

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

【问题讨论】:

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

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

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

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

【讨论】:

请不要回答明显的重复,它们应该被投票/标记为关闭。

以上是关于以0开头的值初始化long long会导致奇怪的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

ajax获取java后台的返回值,long的值为啥会四舍五入解决办法

将浮点数分配给 long double 时,它​​的值会发生啥变化?

C#枚举型可以是int,chr,long吗

如何用值初始化 HashSet<Long> [重复]

如何修复错误:无法将类型“java.lang.String”的值转换为所需类型“java.lang.Long”;

com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的值转换为 long