如果我想将 char 提升为 int,我应该使用 static_cast<int>(char 变量)还是 +(char 变量),为什么?

If I want to promote a char to an int, should I use static_cast<int>(char variable) or +(char variable) and why?

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

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

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

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

此外,static_cast 非常清楚您的意图。对于不是 100% 熟悉整数提升规则的人来说,使用 + 运算符可能看起来很奇特(难以理解)。就 "safety" 而言,afaik,两者同样出色。

相关:What is the difference between static_cast<> and C style casting?