【发布时间】:2021-09-25 21:40:20
【问题描述】:
谁能解释一下这行代码是什么意思
-(char)((unsigned char) ~0 >> 1) - 1);
我不知道作者为什么在 char 前面使用“-”,最后使用 -1。我知道 ~0 会将所有位变为 1,然后右移会将其移位一次,以便前面出现零。
【问题讨论】:
-
一元 - 否定。
-
当你写
-3时,-是什么意思? -
那是可怕的代码。通过查看
CHAR_MIN或std::numeric_limits<char>::min()来获得最小char值要简单得多。 -
@PeteBecker:它来自
CHAR_MIN或SCHAR_MIN的定义。问题是探索为什么<limits.h>以它的方式定义值。如果您阅读标记为原始的问题及其答案,您会发现它不是可怕的代码,并且各种组件在定义常量时很有用。 (事实证明,char情况下不需要char演员表,但在一般情况下需要它,例如long。) -
@EricPostpischil --
CHAR_MIN的定义是“char类型对象的最小值”。该代码很可能来自CHAR_MIN的某些标准库实现,但这并不是好的代码。标准库附带一个编译器,因此它可以依赖于与该特定编译器一起工作的各种非便携式黑客。大多数用户应该忽略标准库如何实现的细节。
标签: c++ c char bit-manipulation