¡¡¡Un resultado realmente sorprendente!!!

 

Código:

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.
}

Ahora una pregunta para que te hagas: ¿quién me está haciendo un glitch o MQL4?

Gracias:)

 

¡Realmente encantador!


¡Parece que podrías ganar dinero rápidamente con esto!

 

¿qué es lo que no le satisface?
sí=1, no=0,

a<=f no cumple

==respuesta correcta

 
Korey >> :

¿qué es lo que no le satisface?
sí=1, no=0,

a<=f no se cumplec

== respuesta correcta

Pero sí (a>=s || a<=f) && s>f

 
WWer писал(а) >>

Pero (a>=s || a<=f) && s>f

Entonces los paréntesis deben ser

 
Vinin >> :

Deberías haber puesto paréntesis

¿Por qué? || tiene mayor prioridad que &&

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

En general, hay que separarlos explícitamente con paréntesis. Ya me lo creí una vez.

WWer >>:

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

así que especifícalo en el código, para que el script pueda entenderlo =)


 
Korey писал(а) >>

¿qué es lo que no le satisface?
>> sí=1, no=0,

a<=f no cumple

==f es correcto

La respuesta es correcta, o se trata de una regla muy extraña en MQL4, o las operaciones lógicas se realizan según una regla muy extraña. No se parece a C/C++ ni a ninguna otra cosa. Incluso lo he traducido a 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));
Resultado: verdadero falso verdadero verdadero
 
WWer писал(а) >>

¿Por qué? || tiene mayor prioridad que &&

Por el contrario, && tiene mayor prioridad que ||.

 
nen >> :

Por el contrario, && tiene mayor prioridad que ||.

¿EN MQL4? Posiblemente, pero debería serlo.

 

No, en absoluto. La "o" (||) tiene prioridad aquí - ¡sin ambigüedades!

Si no hay paréntesis, se ejecuta primero || y luego &&

Por ello, los paréntesis deben colocarse en los lugares adecuados.