如果 x 是一个像 1010 这样的 4 位字,而你做了操作 !!x,
- 第一个 !x 不会返回 0101,
- 第二个 !(!x) 返回 1010?
而是返回 ...0001 或 ...0000。这是为什么?
最佳答案
在 C 中,!x
要么是 1 要么是 0,所以 !!x
是一个“折叠到 0 或 1 运算符”,因为任何非零值数字映射到 1,0 保持原样。这在某些情况下可能很有用。
在 C++ 中,!x
是一个 bool
类型,所以 !!x
是一个“折叠为假或真运算符”感觉任何非零数字都映射到 true
,零映射到 false
。
关于c++ - 为什么双重否定强制值变成 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48672192/