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

Rad*_*row 3 c macros casting

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

#define MAGIC_NUMBER  (unsigned char)0x5D
Run Code Online (Sandbox Code Playgroud)

为什么有必要?

Sou*_*osh 6

回答

为什么有必要

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

我们什么时候使用

太宽泛,可能超出了答案的范围.例如,一种可能的情况是%hhx,在printf()族的情况下,将MACRO作为格式说明符的参数提供.