7

Rails アプリケーションの厄介なバグを乗り越えたところ、!0 が false であることが問題であることがわかりました。私はそれが真実であるべきだと思っていました。

という印象を受けました!演算子は整数のビットを逆にするため、0 はすべて 1 になり、したがって true になります。

そうではありません、なぜですか?

Railsコンソールからも注意してください:

1.9.3p286 :002 > !0
 => false 
1.9.3p286 :003 > 0
 => 0 
1.9.3p286 :004 > !1
 => false 
1.9.3p286 :005 > !!0
 => true 
1.9.3p286 :006 > !0
 => false 
1.9.3p286 :007 > !23
 => false 
4

3 に答える 3

13

0と同等ではないためですfalse0は整数値で、すべての整数のブール値は ですtrue。と評価されるのfalsenil、明示的に andだけfalseです。

が であるとすると、直感的には0です。true!0false

!はビット単位の演算子ではなく、論理演算子NOTです。おそらくあなたは意味しました~0か?

于 2013-05-11T09:36:11.953 に答える