这是做什么的以及如何做?
typedef int map_t [1<<MAX];
Run Code Online (Sandbox Code Playgroud)
那条线做什么?
假设MAX在编译时是一个常量,那么这段代码:
typedef int map_t [1<<MAX];
map_t x;
Run Code Online (Sandbox Code Playgroud)
与此代码相同:
int x[1 << MAX];
Run Code Online (Sandbox Code Playgroud)
我们假设MAX定义为8:
typedef int map_t[1<<MAX];
Run Code Online (Sandbox Code Playgroud)
和...一样
typedef int map_t[256];
Run Code Online (Sandbox Code Playgroud)
因为1 << 8= 256.这意味着数字1的移位位向左8次,如下所示:
1是0000 0001二进制
一班后:
0000 0010,小数点后2
8班后:
1 0000 0000,十进制256
所以这里没有bitmasking,这只是简单的说法
typedef int map_t[pow(2,MAX)];
Run Code Online (Sandbox Code Playgroud)
我还没有完成C,但上面应该编译,对吧?
编辑:以上不编译,但如果我们要动态分配它应该工作.