在阅读C ++中的位图处理时,我遇到了这段代码 用于使用从位图文件中获取的数据加载调色板:
//set Number of Colors
numColors = 1 << bmih.biBitCount;
//load the palette for 8 bits per pixel
if(bmih.biBitCount == 8) {
colours=new RGBQUAD[numColours];
fread(colours,sizeof(RGBQUAD),numColours,in);
}
其中“bmih.biBitCount”是已具有值的预定义变量。 为什么作者声明numColors等于1然后将值bmih.biBitCount分配给同一行中的该变量?这究竟做了什么以及将变量值分配两次内联的好处是什么?
答案 0 :(得分:2)
他没有,这就是使用<<
作为“流媒体”操作符混淆人们的情况。
<<
和>>
运算符传统上是位移运算符,这就是它们在这种情况下的含义。这些运算符将变量向左或向右移动了许多位置。假设我们有x = 0b00001
(并且您的编译器理解这样的二进制表示法)。 x << 2
会给出结果0b00100
。