アプリ版:「スタンプのみでお礼する」機能のリリースについて

andとorを同時に使用する場合について質問です。

Case1) if A=1 and B=1 or C=1 then
これは「Aが1かつBが1であるか、又はCが1であれば」という意味か
「Aが1であり、かつBが1であるか又はCが1であれば」という意味なのか
どちらでしょうか。

Case2) if A=1 or B=1 and C=1 then
次に、この場合はどちらの意味でしょうか。

よろしくお願いします。

A 回答 (3件)

演算には、優先順位と言うものがあります


算数の+-×÷の四則演算と同じです

Visual Basic における演算子の優先順位
http://msdn2.microsoft.com/ja-jp/library/fw84t89 …

> if A=1 and B=1 or C=1 then
((A=1) And (B=1)) Or (C=1)
と同じ意味で
> if A=1 or B=1 and C=1 then
(A=1) Or ((B=1) And (C=1))
と同じ意味になります
    • good
    • 2
この回答へのお礼

この場合、Andが優先されるのですね。
ありがとうございました。

お礼日時:2007/07/17 03:50

(1)#1で述べられているように プログラム言語には、(例は論理演算子)演算子には優先度というのが決められてあります。


http://www.skai.co.jp/arufonsu/vb/VB-004-01.htm
たまたまVBでは、AND>ORになっている。
(2)優先度が同じ演算子の場合、左から演算される決めが多い。
上記の記事などによると、VBでは同じ優先度の演算子がないようです。同種の演算子の中だけの問題になる。
(3)作った本人が判りやすいように、読む人がわかりやすいように
括弧を使って表現すべきです。本件質問のケースで自分でも迷うようなら、自分の実現したいように、括弧をつけるべきです。
システム任せにしなくても、この件では、方法があるのだから。
    • good
    • 0
この回答へのお礼

ExcelVBAではAndの方が優先されるのですね。
ありがとうございました。

お礼日時:2007/07/17 03:52

Andを先に見ます。


だから、

Case1

If (A = 1 And B = 1) Or C = 1

Case2
If A=1 Or (B=1 And C=1)

ということです。

ためしてみました。
Sub test01()

Set A = Range("A1")
Set B = Range("B1")
Set C = Range("C1")

If A = 1 And B = 1 Or C = 1 Then

x = True
Else
x = False
End If
MsgBox x

End Sub
    • good
    • 1
この回答へのお礼

Andが優先されるのですね。
ありがとうございました。

お礼日時:2007/07/17 03:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A