「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板

(#2559) Re: 比較演算子の挙動がおかしい - うぇいく (2016-04-14 14:35) /緊急 未処理
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でない)ならば、

比較演算子の挙動がおかしい / たいがあ (2016-04-14 11:12) (#2558)/ 緊急 未処理
  Re: 比較演算子の挙動がおかしい / うぇいく (2016-04-14 14:35) (#2559)/ 緊急 未処理
    Re:Re: 比較演算子の挙動がおかしい / たいがあ (2016-04-15 11:25) (#2560)/ 緊急 解決

(#2559)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能