1

这个问题有点主观,但我相信它可能会导致一些建设性的答案。假设我有char x;并且我想将它提升为一个整数,以便我可以访问它的数值。我应该更喜欢使用哪个,为什么?static_cast<int>还是一元算术运算符+

我自己的想法是使用 astatic_cast<int>更加明确和可读。但是,使用一元算术运算符+的代码更短。

一种方法比另一种更安全吗?

4

1 回答 1

2

IMO,使用 有一个重要优势static_cast,即使它有点冗长:它允许您通过grep或任何其他文本搜索实用程序快速搜索代码中的演员表。在大型项目中,这可能会有所不同,因为否则 C 风格的转换通常会在函数声明中被错误地匹配,例如void f(double),(double)当然不是转换。

此外,static_cast完全清楚你的意图。+对于不是 100% 熟悉整数促销规则的人来说,使用运算符可能看起来很奇怪(难以理解)。在“安全”方面,afaik,两者都一样好。

相关:static_cast<> 和 C 风格转换有什么区别?

于 2015-05-26T03:58:26.530 回答