ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Среда
27 января
/1068462
Топик полностью
IBAH (11.01.2021 19:59, просмотров: 116) в ответ на Почему-то кажется, что виноваты беззнаковый тип Kolvo и Adres, и integer promotion в if((Adres+Kolvo)>MaxReg) return; - автор: Vit
Прихожу к мысли, что анализатор тупенький. Запомнить что (Adres+Kolvo)<=MaxReg не в состоянии! Когда доходит до цикла, он об этом забывает. Вот так, этот тупорырый, не ругается: 
#define MaxRegTX (32)
#define MaxReg (16)
void PUT(unsigned char a);
unsigned short Reg[MaxReg];
...
...
...
{
unsigned short Kolvo=SetKolvo();
unsigned short Adres=SetAdres();
if(Kolvo>MaxRegTX || Kolvo==0) return;
unsigned short tmp= Adres+Kolvo;
if((tmp)>MaxReg) return;
 ...
 ...
 ...
for(int i=Adres;i<tmp;i++);
  {
  PUT(Reg[i]>>0); 
  PUT(Reg[i]>>8);
  }
}
Ответить
Ответы