2
可能有人知道這個定義使用移位運算符與指定的#define一些
#define RECV_BUFFER_LENGTH 4096
int main()
{
unsigned char buffer[RECV_BUFFER_LENGTH >> 1];
...
}
什麼是緩衝區字符串的長度的含義是什麼?
可能有人知道這個定義使用移位運算符與指定的#define一些
#define RECV_BUFFER_LENGTH 4096
int main()
{
unsigned char buffer[RECV_BUFFER_LENGTH >> 1];
...
}
什麼是緩衝區字符串的長度的含義是什麼?
這是有人認爲他們將通過不使用更可讀的
unsigned char buffer[RECV_BUFFER_LENGTH/2]
其實這就是利潤的東西在編譯時進行評估。如果不是這樣,優化器可以將其轉化爲更快的可讀性轉換。
可以按如下方式進行翻譯:
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.
現在很清楚。謝謝。 – roll