本当に素晴らしい出来栄えです!!!

 

コード

void DebugInfo()
{
   int a=23;
   int s=20;
   int f=1;
   // Исходное условие
   bool r1 = a>= s && a<= f && s<= f || ( a>= s || a<= f) && s> f;
   // Дальше пошли извращения
   bool r2 = a>= s && a<= f && s<= f;
   bool r3 = ( a>= s || a<= f) && s> f;
   bool r4 = r2 || r3;
   // Вывод
   Print ( r1+" "+ r2+" "+ r3+" "+ r4);
   // Результат: 0 0 1 1. А должно быть: 1 0 1 1.
}

さて、皆さんに質問です。私とMQL4、どちらがグリッチしているのでしょうか?

ありがとうございます:)

 

本当に楽しいです。


これならすぐにでも儲けられそうですね!

 

どのような点が不満なのでしょうか?
yes=1、no=0。

a<=fを満たさない

==正解

 
Korey >> :

どのような点が不満なのでしょうか?
yes=1、no=0。

a<=fを満たさないc

== 正解

しかし、それは(a>=s || a<=f) && s>fを行います。

 
WWer писал(а)>>

しかし、(a>=s || a<=f) && s>f

そうすると、括弧は

 
Vinin >> :

括弧を付けるべきでした

なぜ?|| は && よりも優先順位が高い。

 
(a>=s || a<=f) - 1 || 0 = 1
(a>=s || a<=f)&& s > f - 1 && 1 = 1

むしろ、明示的に括弧をつけるべきでしょう。すでに一度、ひっかかったことがあるんです。

WWer >>:

Зачем? У || большый приоритет чем у &&

ということで、スクリプトが理解できるようにコードで指定します =)。


 
Korey писал(а)>>

何が不満なのか?
>> yes=1、no=0。

a<=fを満たさない

==fは正しい

答えが正しいのか、MQL4の非常に不思議なルールに従って論理演算が行われているだけなのか、どちらかです。C/C++とかには見えませんね。JavaScriptに翻訳したこともあります。

var a=23;
var s=20;
var f=1;
// Исходное условие
var r1 = a>=s && a<=f && s<=f || (a>=s || a<=f) && s>f;
// Дальше пошли извращения
var r2 = a>=s && a<=f && s<=f;
var r3 = (a>=s || a<=f) && s>f;
var r4 = r2 || r3;
// Вывод
WScript.Echo(String(r1)+" "+String(r2)+" "+String(r3)+" "+String(r4));
結果:true false true true
 
WWer писал(а)>>

なぜ?|| は && よりも優先順位が高い。

逆に、&& は || よりも高い優先度を持つ。

 
nen >> :

逆に、&& は || よりも高い優先度を持ちます。

IN MQL4 ?可能性はあるが、そうでなければならない。

 

そんなことないですよここでは、"or"(||) が優先されます - 一義的に !

括弧がない場合は、まず || が実行され、次に && が実行されます。

そのため、適切な場所に括弧を入れる必要があります。

理由: