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

 
Igor Makanu:

проверил:

OK, работает без предупреждений компилятора

Спасибо

Вы будете смеяться, но даже так работает без предупреждений

uchar c[16];
int ini2=0xFFFF;
ArrayInitialize(c, (uchar)ini2);
 
Aleksey Mavrin:

Вы будете смеяться, но даже так работает без предупреждений

вы тоже будете смеятся но это путь в UB и способ обрести сложноловимый баг на следующих билдах :-)

int foo=-1;

uchar bar=(uchar)foo; // чему должен быть равен bar ?

 
Igor Makanu:

проверил:

OK, работает без предупреждений компилятора

Спасибо

Зачем нужен вызов ArrayInitialize в этой случае? Почему не написать просто uchar uc[16] = {0xFF}; ?

ArrayInitialize имеет смысл для динамически распределенных массивов, а тут размер якобы известен в момент описания.

 
Aleksey Mavrin:

Вы будете смеяться, но даже так работает без предупреждений

не смешно, это не правильная инициализация, которую потом можно самому не понять почему так делал

понятное дело, что старший байт будет обрезан при кастинге к uchar


Stanislav Korotky:

Зачем нужен вызов ArrayInitialize в этой случае? Почему не написать просто uchar uc[16] = {0xFF}; ?

ArrayInitialize имеет смысл для динамически распределенных массивов, а тут размер якобы известен в момент описания.

не прокатит

распринтуйте, будет первый элемент 255, а остальные 0, 0, 0, ...

 
Igor Makanu:

OK, работает без предупреждений компилятора

без приведения по-хорошему так

ArrayInitialize(uc, '\xFF');
UPD нет, тоже предупреждение, такой литерал имеет тип ushort
 
В очередной раз на ровном месте...
void OnStart(){
   uchar uc[16];
   ArrayInitialize (uc, -1);
   ArrayPrint(uc);  // 255 255 255 255 255 ...
}
 
Sergey Dzyublik :
В очередной раз на ровном месте...
И в чем проблема?
 
Sergey Dzyublik:
В очередной раз на ровном месте...

что-то я совсем запутался ) 

про константы от 128 и 0хFF предупреждает, а про переменные int с теми же значениями - нет.

более того, про константу -1 int, тоже не предупреждает. В этом есть какая-то  логика? 

з.ы. ну с -1 понятно наверное, она к любому беззнаковому приводится по макс значению по правилам. а переменные чем хуже констант.
 
Andrei Trukhanovich:

без приведения по-хорошему так

UPD нет, тоже предупреждение, такой литерал имеет тип ushort
'\xFF'

?? офигеть... в 4-ке (по случаю она открыта) катит. 

void OnStart()
  {
ushort foo='\xFF';

  }

PS/ когда вдруг по случаю, у кого рядом веб-деятели сайта, дайте им по рукам. 

 
В билд 2460 и 2470 при удалении всез сделок и отключении автообновления с открытием нового ордера они вновь все появляются ранее такого не было и перестало работать часть советников и индикаторов пишет err 400 и err 401 хотя компилируются без ошибок но работать не хотят.....
Причина обращения: