以下代码将浮点类型7.5
转换为整数值7
,余数丢失。这里,类型转换运算符是int
。我知道它在 C++ 中是有效的类型转换。
int main()
{
int i;
float f = 7.5;
i = (int) f; // Valid in C/C++
}
但在 C/C++
中执行相同操作的另一种方法是在要按类型转换的表达式前面使用函数符号,并将表达式括在括号之间:
i = int (f); // It is worked in C++ but not C
所以,我有一个问题,在 C++ 中进行类型转换是否有效?
最佳答案
i = int (f);
在 C++ 中有效,但在 C 中无效。
来自 C99 标准,6.5.4 Cast 运算符
cast-expression: unary-expression ( type-name ) cast-expression
C++ 支持上述形式的转换以及函数样式的转换。函数风格转换就像调用类型的构造函数来构造对象。
查看以下使用 C 和 C++ 编译的 block 代码。
#include <stdio.h>
int main()
{
float f = 10.2;
int i = int(f);
printf("i: %d\n", i);
}
非工作 C 程序:http://ideone.com/FfNR5r
工作中的 C++ 程序:http://ideone.com/bSP7sL
关于c++ - C/C++ 中的显式类型转换运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39888189/