-
- Результат 17 бит, т.е. 16 + знак. При выполнении третьей операции, сравнения в "Условие (a1 - a2 > (int16_t)0) со знаком явно проблемы. - De_User(26.02.2016 21:00)
- Нет, конечно. Int-y для данного компилятора. - Олдфаг(26.02.2016 20:45, )
- Аффтор / ТС клянётся что у него int16_t двухбайтные. - De_User(26.02.2016 20:49)
- Нет. Посмотрите, он пишет что int == int32 - Олдфаг(26.02.2016 20:51, )
- И при этом у аффтора a1 = 0x2423; a2 = 0x85c1. Куда тогда делись ещё 4 знакоместа, чтоб было 0x00002423 и 0xFFFF85C1? - De_User(26.02.2016 21:02)
- В условном операторе, если Вы его не принудите к другому формату, компилятор делает вычсисления в int: int(a) - int(b). Итого (0x00002423-0xffff85c1). Результат тоже рассматривается как int и он явно < 0x80000000, т.е. больше 0. - Олдфаг(26.02.2016 21:22, )
- Т.е. как всегда: если что то непонятно, то смотри Asm код. - De_User(26.02.2016 21:46)
- А теперь осталось поняль, на кой хрен мучить 32 - разрядный МК "обрезанными" 16 - разрядными переменными? - De_User(26.02.2016 21:43)
- Чота ты возбужденный какой-то. Выпил - ложись спать. - mr-x(26.02.2016 21:45)
- И, таки да, на тупость обычно агрессивно реагирую. - De_User(26.02.2016 21:48)
- Чота ты возбужденный какой-то. Выпил - ложись спать. - mr-x(26.02.2016 21:45)
- Спасибо за науку! - mr-x(26.02.2016 21:29)
- В условном операторе, если Вы его не принудите к другому формату, компилятор делает вычсисления в int: int(a) - int(b). Итого (0x00002423-0xffff85c1). Результат тоже рассматривается как int и он явно < 0x80000000, т.е. больше 0. - Олдфаг(26.02.2016 21:22, )
- И при этом у аффтора a1 = 0x2423; a2 = 0x85c1. Куда тогда делись ещё 4 знакоместа, чтоб было 0x00002423 и 0xFFFF85C1? - De_User(26.02.2016 21:02)
- Нет. Посмотрите, он пишет что int == int32 - Олдфаг(26.02.2016 20:51, )
- Аффтор / ТС клянётся что у него int16_t двухбайтные. - De_User(26.02.2016 20:49)