오류, 버그, 질문 - 페이지 161

 
alexvd :

이전에는 어떤 조치를 취했습니까?

업데이트가 도움이 되나요?

며칠 동안 사용하지 않은 후 터미널을 열었습니다. 이 사진을 얻었다. 그런 다음 스크립트를 사용하여 기록을 로드했습니다. 변경 없이. 몇 시간을 기다렸다. 이제 모든 것이 정상입니다.

 
근데 실생활에서 누가 MT5를 뛰고 있는지 어디서 알 수 있는지 알려주실 수 있나요?
 
void OnStart ()
  {
//---
   int x,y = 0 ;
   Print ( "x++:" );
   x = x++;
   Print ( "x=" ,x, " y=" ,y);
   y = x++;
   Print ( "x=" ,x, " y=" ,y);
  }

실행 결과가 x==0 및 y==1인 이유를 설명할 수 있습니까? 빌드 342

추신. 읽어야 합니다 ... x== 1 및 y== 0 ...

 
Ashes :

실행 결과가 x==0 및 y==1인 이유를 설명할 수 있습니까? 빌드 342

여기를 보십시오 https://www.mql5.com/en/docs/basis/operations/mathoperation

컴파일러에서 오류나 경고가 발생하지 않습니까?

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - Документация по MQL5
 
Ashes :

실행 결과가 x==0 및 y==1인 이유를 설명할 수 있습니까? 빌드 342

확인, 결과는 x=1, y=0

첫 번째 증분 x=x++는 다음으로 분해됩니다.

t=x;  // x=0
x++;  // x=1
x=t;  // x=0

 
Ashes :

실행 결과가 x==0 및 y==1인 이유를 설명할 수 있습니까? 빌드 342

할 수 있다. x = x++의 구현에 관한 모든 것입니다.

사후 증가 전에 x 값은 임시 변수에 저장됩니다. 그런 다음 증분이 이루어집니다. 그런 다음 임시 변수에서 할당이 이루어집니다.

 
Lizar :

여기를보십시오 https://www.mql5.com/ru/docs/basis/operations/mathoperation

컴파일러가 오류 또는 경고를 발행합니까?

MT5 컴파일러가 조용히 삼켰습니다! MT4에서 컴파일이 실패합니다.

호기심에 C++(Visual Studio 2005)에서 비슷한 구성을 시도했습니다. x와 y의 결과는 동일합니다.

 
Ashes :

실행 결과가 x==0 및 y==1인 이유를 설명할 수 있습니까? 빌드 342

변수는 매트 연산을 수행하기 전에 초기화되어야 합니다. 초기화되지 않은 변수에 할당만 하면 모든 것이 잘 될 것입니다.

그러나 문제를 피하기 위해 변수를 초기화하는 것이 항상 권장됩니다.

 void OnStart ()
  {
//---
   int x= 0 ,y = 0 ;
   Print ( "x++:" );
   x++;
   Print ( "x=" ,x, " y=" ,y);
   y=x;
   Print ( "x=" ,x, " y=" ,y);
  }
 
Ashes :

MT5 컴파일러가 조용히 삼켰습니다! MT4에서 컴파일이 실패합니다.

호기심에 C++(Visual Studio 2005)에서 비슷한 구성을 시도했습니다. x와 y의 결과는 동일합니다.

C++ 표준에서 이 위치는 정의되지 않으며 명시적으로 구현 종속적이라고 합니다. 2가지 주요 구현이 있습니다.

1. 표현식에서 변수를 사용한 직후에 사후 증가(후행 감소)를 수행합니다. (우리가 하는 방법)

2. 전체 표현식이 계산된 후 사후 증가를 수행합니다.

 

실생활에서 어떤 브로커 MT5가 출시되었는지 어디에서 알 수 있습니까?