aiwa 0 28 апреля, 2017 Опубликовано 28 апреля, 2017 · Жалоба Может оптимизатор на этапе компиляции (почему-то) изменяет ширину переменной до 9 бит, при 12+500 получается как раз 0 в 9-битовой переменной. Похоже, что Вы правы. Причем это он делает при операторе а++; И о том, что a - 8-битная он уже вспоминает при сравнении: ??main_0: ADDS R5,R5,#+1 // 44 if(a == 0) { UXTB R0,R5 CBNZ.N R0,??main_1 ...... Но если вместо а++; использовать a+=1; оптимизатор всегда помнит, что a 8-битная и генерирует правильный код: ??main_0: ADDS R5,R5,#+1 UXTB R5,R5 // 44 if(a == 0) { MOVS R0,R5 IT EQ ...... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться