【问题标题】:What does an extra 0 in front of an int value mean?int 值前面的额外 0 是什么意思?
【发布时间】:2011-06-10 21:27:18
【问题描述】:

从一段混淆的代码中得到启发,我有一个关于给整数赋值的小问题:

#include <iostream>
#include <cstdio>

int main() {
    int i = 0101;
    std::cout << i << "\n";
}

输出是 65,我不知道 65 是从哪里来的?有什么想法吗?

【问题讨论】:

  • 链接的副本已关闭且通常质量较低。然而,这个问题和答案是直截了当的。我重新打开它的目的是用作八进制文字常见问题解答的规范欺骗。

标签: c++ octal


【解决方案1】:

它指定一个八进制(base-8)数字:0101 == 1 * (8 * 8) + 1 == 65

【讨论】:

  • @:Lambert: 非常感谢 ;)!真的很有趣。
  • @Chan:不客气。 :) 其实我是几个小时前自己学的,在学习 D 语言的语法的时候!
  • @Chan:0101的完整扩展,如果额外的细节帮助你理解的话:以8为底的101是(从左到右的每个数字)1 * (8 ** 2) + 0 * (8 ** 1) + 1 * (8 ** 0);这简化为答案中的表达式。
【解决方案2】:

兰伯特已经解释过了。所以让我告诉你你还能做什么。

你可以写十六进制整数:

int main() {
    int i = 0x101; //0x specifies this (i.e 101) is hexadecimal integer
    std::cout << i << "\n"; //prints 257 (1 * 16 * 16 + 1)
}

输出:

257

【讨论】:

  • 这没有回答问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 2011-06-05
  • 2018-11-04
  • 2015-03-20
  • 2020-01-07
  • 2014-04-25
  • 2018-09-10
相关资源
最近更新 更多