정말 놀라운 결과입니다!

 

코드:

 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를 괴롭히나요???

감사해요:)

 

정말로 놀라운!


초간단 컷이 될 것 같습니다!

 

당신은 무엇에 만족하지 않습니까?
예=1, 아니요=0,

a<=f 실행하지 않음c

==정답

 
Korey >> :

당신은 무엇에 만족하지 않습니까?
예=1, 아니요=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 실행하지 않음c

==정답

대답은 정확합니다. 또는 내가 버그가 많았거나 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에서? 아마도, 하지만 그래야만 합니다.

 

별말씀을요 ! 여기서 우선 순위는 "또는"(||)입니다. - 확실히!

괄호가 없으면 ||가 먼저 실행되고 &&가 실행됩니다.

따라서 괄호가 필요합니다. 에 넣습니다. 장소