类似的位运算符之间的差异

Jam*_*ter 1 c bit-manipulation bitwise-operators

在引用逐位运算符时,有什么区别!和〜?我觉得他们都翻了一下,但是1可能会给最后的答案增加1分?

~0xC4

compared to

!0xC4
Run Code Online (Sandbox Code Playgroud)

谢谢!

unw*_*ind 7

! 它不是一个按位运算符,它是一个布尔运算符.

布尔运算符通常用于真值int.任何非零值都为true,而0为false.结果总是1为真,0对于假.

  • ! 不是布尔值
  • && 是布尔和
  • || 是布尔值还是

这些是例如if因为它需要布尔值所使用的.布尔和/或运算符也是短路的,这意味着它们在结果已知时停止评估.这很好,它意味着1 || crash_and_burn()永远不会崩溃和燃烧.

但是,在促销之后,当然,按位运算符对整数类型参数的每个位进行操作.

  • ~ 是不是
  • & 是按位的
  • | 是按位还是
  • ^ 是有点冒犯 - 或(xor)

按位运算符(当然)不是短路的,因为它们只是在位对上运行,所以没有任何意义.请注意,虽然有一个^按位运算符,但没有^^布尔值xor运算符.