ANDや&&は、ビット論理演算子です。ビット論理演算子として正しく計算しています(AND,OR,NOT,XOR等は比較演算子ではありません。念のため。)
それらの演算子に数値を直接指定すると、ビット単位での操作の結果が得られます。
---
(1&&2)を言う #0001b AND 0002b = 0000b = 0
(7&&14)を言う #0111b AND 1110b = 0110b = 6
---
※なでしこの場合、ANDやORやNOT等の、ビット演算子ではない論理演算子はないです。
真と偽しか受け付けないような文脈(命令。たとえば「もし、」とか)では、偽を0、真を0以外として受け付けますがANDもORも、これに該当しません(整数全般を受け付けます)。
なお、なでしこの場合、真は1です。定数の「はい」「いいえ」等を使うこともできます(はいが1で、いいえが0)
---
もし、(0==0)が1ならば、
「はい」を言う
違えば、
「いいえ」を言う
もし、(0==0)が2ならば、
「はい」を言う
違えば、
「いいえ」を言う
もし、(0==0)がはいならば、
「はい」を言う
違えば、
「いいえ」を言う
----
真理値に対するANDやORを判定したい場合(つまり、BIT単位ではない論理演算子として使いたい場合)は、まず0と比較等をして明示的に真理値(0or1)にしてから、&&や||を適用します。暗黙的な変換(0以外を真として扱う)に頼ることはできません。
----
a = 1
b = 2
もし((a!=0)&(b!=0))ならば
言う("true")
違えば
言う("false")
---
#日本語的に書くと以下。どうしても()が必要?
#もし(aが0でない)かつ、(bが0でない)ならば、