在阅读有关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分配给该变量?这样做到底有什么用?像这样向变量内联两次赋值的好处是什么?
最佳答案
他没有他将表达式1 << bmih.biBitCount
的结果分配给numColors
。分配发生在最后。 <<
是bitwise left shift operator。这样想:
//set Number of Colors
numColors = (1 << bmih.biBitCount);