c++ - 每次我想在基本类型之间进行转换时,我真的应该使用 static_cast 吗?

标签 c++ coding-style casting primitive

这是什么原因

long l = 1;
char c = static_cast<char>(l);

float f = 1.0f;
int i = static_cast<int>(f);

比这更好

long l = 1;
char c = (char)l;

float f = 1.0f;
int i = (int)f;

当将一种原始数据类型转换为另一种时?

我有很多在类似情况下使用第二种样式进行类型转换的遗留代码,所以这也是一个关于我是否应该对该代码进行全面修订的问题。

最佳答案

面向 future 。

假设将来我这样做:

float blah = 1.0f;
float* f = &blah;

现在,int i = static_cast<int>(f);停止编译,但 int i = (int)f;reinterpret_cast .

static_cast<int> 这正是我要你做的(int)尽你所能给我一个 int。对于后者,编译器将竭尽全力为您提供 int。值(value),而这很少(从来没有?)可取。

关于c++ - 每次我想在基本类型之间进行转换时,我真的应该使用 static_cast 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11654185/

相关文章:

coding-style - 您是否担心代码的美感?

Java 编码约定 : what is the rationale for a space after a cast?

c - C 中的有符号和无符号

c++ - 获取剪贴板数据(CF_TEXT)

c++ - 事件监听器的最佳设计模式

c++ - 调用基类构造函数与初始化子类中的成员变量

mysql - 需要将 SQL 列从 varchar(255) 转换为 bigint(20)

c++ - Boost.Python 包装器中的纯虚拟重载运算符

c++ - C++ 构造函数的默认参数

c++ - 将 vector <int>转换为const vector <const int>