C++ 类型转换/类型约定

C++ type casting / type convention

谁能解释第 5 行和第 7 行是什么意思?

int a;
double b = 2.3;
a = b;
cout << a << endl;
a = int(b); // <-- here
cout << a << endl;
a = (int)b; // <-- here
cout << a << endl;

这叫做C风格转换,不建议在c++中使用,因为它会带来精度损失。这里发生的是 double 类型在内存中表示为一个包含整个部分和浮动部分的结构。当你说 a = int(someVariableNameWhichIsActuallyDouble) 它只需要那个变量的整个部分并将它分配给 a。例如,如果你有 b = 2.9;并且您只想获取可以进行 c 风格转换的数字的全部部分。但是既然你为这种情况编写了 C++ 类型转换,我建议你使用 a = static_cast(b); 但要小心,因为在进行缩小转换(从较大的类型转换为较窄的类型)时,您需要注意不要失去精度。