API предоставляет функцию signed char getDirection();
, которая возвращает 1 для «вперед», 0 для «неподвижных», -1 для «назад».Как сравнить Signed Char с литеральной константой?
И, конечно же, как описано в thesequestions, простое сравнение:
if(getDirection() == -1) { ... }
терпит неудачу. Хорошо, я понимаю, почему он терпит неудачу. Но я просто не могу найти, как заставить его работать! Я попытался литьем левой стороны (int)
, правая сторона в (signed char)
, еще нада ...
редактировать:
signed char a = getDirection();
printf("%d\n",(int) a);
printf("%d\n",(int) getDirection());
Результатов:
-1
255
edit2: на заказ:
const signed char getDirection(uchar d)
{
if(d >= config.directional_inputs.channelCount) return -2;
return shm->input_state.directional_inputs[d].direction;
}
@ AlexD: Желаю.Ну, на самом деле тестовый оператор находится в формате 'printf (" val:% d, сравнение:% d ", getDirection(), (getDirection() == DIRECTION_BACK));' где константа '#define DIRECTION_BACK -1' –
Ваш код верен. Проверьте, действительно ли 'getDirection()' возвращает -1. Покажите результат вашего 'printf'. Также покажите свой реальный код, может быть, просто бродячий ';' где-то. –
@MichaelWalz: Выход: "val: -1, compare: 0". Коллега подозревает ошибку компилятора. –