这似乎是个冷知识,大概现在C++太普及,C语言玩家越来越少了。
C 语言,会根据 enum 包含的值域范围,决定它是 unsigned 还是 signed。
定义最后一个 enum 为 0xffffffff ,会强制这个 enum 成为 unsigned。
如果我们需要用 enum 内的内容进行移位操作,那么我们通常需要确保被移位的常量都是 unsigned 类型。
定义最后这个 enum 的目的就是强制这个 enum 类型成为 无符号,后边参与移位操作不容易出错。
比如传统的情况下,有些常量是通过几个比特移位相加得到的,我们需要所有参与运算的变量常量都是无符号。
其实我的 C 语言启蒙师傅就习惯所有 enum 定义都加这个,目的就是为了强制 enum 成为 无符号。
因为不加这句话的情况下,enum 默认是有符号整数。