【发布时间】:2018-07-18 05:43:07
【问题描述】:
如果 x 是一个像 1010 这样的 4 位字,并且您执行了 !!x 操作,
- 第一个 !x 不会返回 0101,
- 第二个 !(!x) 返回 1010?
而是返回 ...0001 或 ...0000。这是为什么呢?
【问题讨论】:
-
也许先弄清楚单否定的作用是什么?
-
相关:stackoverflow.com/questions/9229601/what-is-in-c-code(我发誓有这样一个更好的问题,但目前找不到......)
-
你混淆了
!和~ -
第一个
!将任何非零值转换为false,第二个!使其成为true(反之亦然) -
在 C 中,“双重否定强制值变为布尔值”并不完全正确。
!结果是int,而不是bool,其值为 0 或 1。