我需要投射无符号字符吗?

Do I need to cast unsigned chars?

本文关键字:字符 无符号      更新时间:2023-10-16

我正在使用

unsigned char ucONE = (unsigned char)1;

作为全局变量。

这有必要吗?

不,整型(包括 3 种类型charunsigned charsigned char)可以隐式地相互转换。但是,由于此行为可能并不总是有意的,因此一些编译器会发出警告,并且某些代码约定要求强制转换显式进行转换。

无论如何,如果您进行铸造,您应该更喜欢C++铸造操作员,因为它们更有限,因此更安全。在您的情况下,这可能是static_cast.

正如其他人已经暗示的那样,全局变量并不总是最佳实践,值为 1 的名为"one"的变量(不是常量)有点可疑,但在不知道您的设计的情况下,很难判断这些选择是否合适。