我已经对字节序及其在C语言中的作用进行了一些阅读,但没有什么能真正为我澄清这一点。我刚刚开始使用C,我看到了这个例子:
#include <stdio.h>
int main(void) {
int x = 017;
int y = 12;
int diff = x - y;
printf("diff is %d\n", diff);
return 0;
}
它会询问打印的内容。我编译并运行了这个例子,得到的差异是3,所以x是15.我有点看看为什么会这样,但如果有人真的为我澄清它,我真的很感激。
[1]我找了类似的问题,但没有找到任何彻底解释这个问题的问题。如果有人可以将我链接到一个也不错的那个。
答案 0 :(得分:8)
使用0
前缀数字将告诉编译器将其标记为八进制数(基数为8)
就像在0x
前面加上它会告诉它使用hex(base 16)
例如:
int x = 05; // 5 in octal
int y = 5; // 5 in decimal
int z = 0x5; // 5 in hex
答案 1 :(得分:1)
017
整数常量 八进制常量的语法, 6.4.4.1
是常量octal >如下:
octal-constant:
0
octal-constant octal-digit
octal-digit: one of
0 1 2 3 4 5 6 7
因此任何以0
开头的整数常量都是八进制( base 8 ),这包括0
本身。