【发布时间】:2019-12-07 11:34:57
【问题描述】:
我得到了意想不到的输出,我无法弄清楚原因。
#include <stdio.h>
int main() {
int a = 0100;
int b = 010;
int c = 1111;
int d = 01111;
printf("0100 => %d, 010 => %d, 1111 => %d, 01111=> %d\n", a, b, c, d);
}
输出:
0100 => 64, 010 => 8, 1111 => 1111, 01111=> 585
为什么会出现这样的输出?
【问题讨论】:
-
任何C tutorial 都会给出答案。或C11 reference。或C syntax 维基页面。或this C reference。另请阅读how to debug small programs
-
我想向观众强调这实际上是一个很好的问题。位操作并不是所有程序员都擅长的,了解整数的传统十六进制/八进制前缀并不是完全“基础”。