编译器警告(等级 4)C4254

“operator”:从“type1:field_bits”转换到“type2:field_bits”,可能丢失数据

较大的位字段已被分配给较小的位字段。 可能会丢失数据。

默认情况下,此警告处于关闭状态。 有关详细信息,请参阅 Compiler Warnings That Are Off by Default

下面的示例生成 C4254:

// C4254.cpp
// compile with: /W4
#pragma warning(default: 4254)

struct X {
   int a : 20;
   int b : 12;
};

int main() {
   X *x = new X();
   x->b = 10;
   x->a = 4;
   x->a = x->b;    // OK
   x->b = x->a;    // C4254
};