我们什么时候在#define 中进行类型转换

When do we do typecast in #define

我们什么时候在这样的定义中使用类型转换:

#define MAGIC_NUMBER  (unsigned char)0x5D

为什么有必要?

回答

why is it necessary

没有显式转换,0x5D 被视为十六进制形式的整数文字或整数常量。通过转换,我们尝试 明确地 将其表示为 unsigned char.

When do we use

范围太广,可能超出了回答范围。例如,一种 可能 的情况是,在 printf() 系列的情况下,将 MACRO 作为参数提供给 %hhx 格式说明符。