这是什么原因
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/