编译器警告(等级 1)C4305

“conversion”: 从“type1”到“type2”截断

注解

当值转换为初始化中的较小类型或转化为构造函数参数时将发出此警告,这将导致信息丢失。

示例

此示例演示了此警告的两种显示方式:

// C4305.cpp
// Compile by using: cl /EHsc /W4 C4305.cpp

struct item
{
    item(float) {}
};

int main()
{
    float f = 2.71828;          // C4305 'initializing'
    item i(3.14159);            // C4305 'argument'
    return static_cast<int>(f);
}

若要解决此问题,请使用正确类型的值进行初始化,或使用显式强制转换来转换到正确的类型。 例如,使用 float 文本(如 2.71828f)而不是 double(浮点文本的默认类型)来初始化 float 变量,或传递给采用 float 参数的构造函数。