在阅读有关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);

09-08 11:13