【发布时间】:2019-07-11 19:00:14
【问题描述】:
我试图了解下一个计算是如何执行的。
例如,如果这是我的终端命令
gcc ex2.c -D b+=2
为什么我会得到 5 个?
#include <stdio.h>
int main()
{
#ifdef b
printf("%d\n", 2 b | ~ 2 b);
#endif
return 0;
}
2 b 表示 2*b ?
~ 2 b 表示 2*b 然后 ~ ?
【问题讨论】:
-
这……很奇怪……不要学写和执行这样的代码。
-
这是我做的一个测试中的一个问题
-
根据this page
-D b+=2似乎不是一个有效的语法。 -
我猜想测试的人都喜欢莎士比亚(“2 b | ~ 2 b”是“成为,或不是”的C)。有趣,但在学习环境中也有点烦人,这是非常人为的,在现实世界中,这样做的程序员很可能会在代码审查中得到……单词。
标签: c gcc bitwise-operators bitflags