Fut*_*Sci 3 c macros c-preprocessor
我是一个相对优秀的C程序员,我喜欢做研究而不喜欢提问,但这段特殊的代码简直令人不安.它与XQueryKeymap一起使用,但我根本不理解它:
#define BIT(c,x) (c[x/8]&(1<<(x%8)))
Run Code Online (Sandbox Code Playgroud)
让我感到困扰的是符号[]和 <<符号.但如果你能口口上说出整件事的意义,我会非常感激.
它将值打包到char数组中.每个数组元素有8位(一个字符数组),所以数组的索引定义为x/8- 同时1<<(x%8)通过模数(其余部分x/8)将单个位与char中的8位相移- 所以这如果x设置了位,则宏返回非零,如果不设置则返回0.