C/ c++中的显式类型转换操作符
Explicit type casting operator in C/C++
下面的代码将浮点类型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中无效。
6.5.4强制转换操作符cast-expression: unary-expression ( type-name ) cast-expression
c++支持上述形式的类型转换以及函数样式类型转换。函数类型强制转换就像调用一个类型的构造函数来构造一个对象。
查看下面用C和c++编译的块代码。
#include <stdio.h>
int main()
{
float f = 10.2;
int i = int(f);
printf("i: %dn", i);
}
不工作的C程序:http://ideone.com/FfNR5r
工作c++程序:http://ideone.com/bSP7sL
它是用c++编写的。但是,尽管它是有效的,c++(与C相反)鼓励在类型转换中使用显式:
auto i = static_cast<int>(7.0);
哦,使用类型安全的流,而不是容易出错的printf:
std::cout << i << "n";
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++中的双指针类型转换
- 逐位操作的隐式类型转换
- 我可以将C 17 Capture lambda ConstexPR转换操作符的结果用作函数指针模板非类型参数吗?
- 模板类型转换操作符=
- 为什么模板化的用户定义转换操作符能够确定其返回类型?
- 模板化操作符实例化和类型转换
- 类型转换操作符重载——Visual studio 2013内部错误
- 没有显式类型转换的操作符重载
- 是否有方法为任何指针类型定义转换操作符
- C/ c++中的显式类型转换操作符
- 重载c++实类型和自定义复杂类型之间的强制转换操作符()
- 没有调用类型转换操作符
- 使用带有转换操作符的temp. proxy模拟返回类型的类型推导
- 类型转换操作符不用于强制类型转换,编译器不同
- 我可以添加自己的类型转换操作符,以便能够将c++对象转换为objective C吗?
- 如何在c++中定义默认类型转换操作符
- 具有构造函数类型转换和转换操作符的转换序列
- c++使用赋值操作符模拟类型转换