c++ - C/C++ 中的显式类型转换运算符

标签 c++ c casting

以下代码将浮点类型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/

相关文章:

c++ - 将 cmake 编译器从 clang 更改为 g++ for mac

vb.net 中的 C++ DLL Wrapper 传递字节数组的字节数组?

c++ - 在同一函数中使用指针和引用作为返回类型

c - 64位精度 sleep 功能?

c - 使用 openCL/C 实现矩阵乘法

将指针分配给函数时从不同大小警告的整数转换为指针

c++ - 如何在 C++ 中将复杂的<float>变量转换为 float ?

c++ - 定义明确的缩小铸型

c++ - 可以使用一个指针来匹配 Python 中 float 变量的 int 值吗?

c - 递归如何在 C 中工作