有人可以知道这个定义的含义吗
#define RECV_BUFFER_LENGTH 4096
int main()
{
unsigned char buffer[RECV_BUFFER_LENGTH >> 1];
...
}
缓冲区字符串的长度是多少?
你可以这样翻译:
unsigned char buffer[RECV_BUFFER_LENGTH >> 1];
unsigned char buffer[4096 >> 1]; // replace RECV_BUFFER_LENGTH by its definition
>>
是按位右移运算符。4096 >> 1
表示将数字右移一位4096
(以二进制表示)。的二进制表示4096
修改如下:
1000000000000 <-- this is 4096
100000000000 <-- after shifting right by 1 bit, this is 2048
这给出了:
unsigned char buffer[2048]; // buffer string is a 2048 element char array.
这是有人认为他们会通过不使用更具可读性来获利
unsigned char buffer[RECV_BUFFER_LENGTH / 2]
实际上这是在编译时评估的。如果不是这样,优化器可以将其转化为更快的可读性差的转变。