Ошибки, баги, вопросы - страница 3707

 
fxsaber # :
Stupid, where's the mistake? It seems that there should be zero.

На самом деле должно быть предупреждение. Не следует перемещать 32-битное целое число на 32 бита.

 Void OnStart()
  {
//----
   uint Num = 1 ;

   printf("%u", Num >> 32 );
   Print(Num >> 32);
  }

Непоследовательное поведение:

2026.02.06 11:30:17.467 _ (EURUSD,M15) 0
2026.02.06 11:30:17.467 _(EURUSD,M15) 3490582584

Сообщается в MQ.

 
Alain Verleyen #:

На самом деле должно быть предупреждение. Не следует перемещать 32-битное целое число на 32 бита.

Непоследовательное поведение:

2026.02.06 11:30:17.467 _ (EURUSD,M15) 0
2026.02.06 11:30:17.467 _(EURUSD,M15) 3490582584

Сообщается в MQ.

хм. Действительно. 
Причем рандомное число. 
 void OnStart()
  {
   uint Num = 1 ;

   printf ("%u", Num >> 32 );
   Print (Num >> 32);
   Print (Num >> 32);
   Print (Num >> 32);
   Print (Num >> 32);
  }

2026.02.06 11:44:07.708	TestTimeCur (EURUSD,M3)	0
2026.02.06 11:44:07.708	TestTimeCur (EURUSD,M3)	2147618872
2026.02.06 11:44:07.708	TestTimeCur (EURUSD,M3)	2147618872
2026.02.06 11:44:07.708	TestTimeCur (EURUSD,M3)	2147618872
2026.02.06 11:44:07.708	TestTimeCur (EURUSD,M3)	2147618872
2026.02.06 11:44:16.475	TestTimeCur (EURUSD,M3)	0
2026.02.06 11:44:16.475	TestTimeCur (EURUSD,M3)	2147487800
2026.02.06 11:44:16.475	TestTimeCur (EURUSD,M3)	2147487800
2026.02.06 11:44:16.475	TestTimeCur (EURUSD,M3)	2147487800
2026.02.06 11:44:16.475	TestTimeCur (EURUSD,M3)	2147487800
 
Alain Verleyen #:

На самом деле должно быть предупреждение. Не следует перемещать 32-битное целое число на 32 бита.

Непоследовательное поведение:

2026.02.06 11:30:17.467 _ (EURUSD,M15) 0
2026.02.06 11:30:17.467 _(EURUSD,M15) 3490582584

Сообщается в MQ.


void OnStart() {
   uint Num = 1 ;
   printf ("%u", Num >> 32 );
   Print(Num >> 32);
   
   if((Num >> 32) >= 0) Print("Done"); // данная строка прекращает последующее выполнение программы без краша.
   Print("End");
}
2026.02.06 12:10:41.123 TestTimeCur (EURUSD,M3) 0
2026.02.06 12:10:41.123 TestTimeCur (EURUSD,M3) 684724280
2026.02.06 12:10:42.059 TestTimeCur (EURUSD,M3) 0
2026.02.06 12:10:42.059 TestTimeCur (EURUSD,M3) 684527672
 
Nikolai Semko # :


Да, подобное утверждение является неопределенным поведением (UB в C++).