我写了下面的代码,期望它输出211,但是当我编译并运行它时,我看到了137.
有人可以解释一下发生了什么吗?谢谢.
?#include <stdio.h>
int main()
{
int binary1,binary2;
binary1 = 0100;
binary2 = 0111;
printf("%d\n", binary1 + binary2);
return 0:
}
Run Code Online (Sandbox Code Playgroud)
这些不是二进制数,而是八进制数(基数为8):
binary1 = 0100; // = 64
binary2 = 0111; // = 64 + 8 + 1 = 73
printf("%d \n", binary1 + binary2); // = 64 + 73 = 137
Run Code Online (Sandbox Code Playgroud)
因为%d打印出十进制的数字.如果要打印八进制数字,则需要使用%o,这将打印出211.
%d:decimal => 137%o:octal => 211printf() 不知道你在八进制中定义了数字.