【发布时间】:2017-09-09 18:14:42
【问题描述】:
我正在尝试理解 C 中的按位与运算符;它一直有效,直到我在 177 前面放一个 0。
我手动执行此操作以确保我了解编译器在做什么
#include <stdio.h>
main () {
printf ("%d\n", 1999 & 177);
return 0;
}
上面的答案是129,这也是我手工做的时候的答案
#include <stdio.h>
main () {
printf ("%d\n", 1999 & 0177);
return 0;
}
上面的编译器给了我答案 79,有人可以解释一下它是如何得到答案 79 的吗?
【问题讨论】:
-
0177 是octal literal。
-
数字上的前缀0通常表示该数字是base-8。 0117 != 117
-
很多重复:(
-
抱歉没有想到,之前确实尝试过研究我的问题
标签: c gcc bitwise-operators bit bitwise-and