代码用g ++而不是gcc编译

nev*_*nom 0 c c++ gcc casting g++

下面的代码用g ++而不是gcc编译,我想知道为什么?

inline unsigned FloatFlip(unsigned f)
{
    unsigned mask = -int(f >> 31) | 0x80000000;
    return f ^ mask;
}
Run Code Online (Sandbox Code Playgroud)

我假设在C++中,int(f >> 31)是一个构造函数,但这让我想知道为什么它包含在代码中.是否有必要?

phu*_*clv 8

C不支持C++"函数式"转换.你需要这样写

unsigned mask = -(int)(f >> 31) | 0x80000000;
Run Code Online (Sandbox Code Playgroud)