一个真正惊人的结果!!!。

 

代码。

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 писал(а)>>

你有什么不满意的地方?
>> 是=1,否=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));
结果:真 假 真 真 真
 
WWer писал(а)>>

为什么?||的优先级高于&&。

反之,&&的优先级比||高。

 
nen >> :

反之,&&的优先级比||高。

在MQL4中?有可能,但应该是这样。

 

一点也不!这里 "或"(||)优先 - 毫不含糊!

如果没有括号,||首先被执行,然后是&&。

因此,必须在适当的地方放置括号。