以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 时,它的值会发生啥变化?
如何修复错误:无法将类型“java.lang.String”的值转换为所需类型“java.lang.Long”;
com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的值转换为 long