Интересное наблюдение. Компилятор armcc: Строка:
uint8_t str[10];
...
str[0] = 'ф';// Warning: #68-D: integer conversion resulted in a change of sign
str[0] = (condition) ? 'ф' : 'я';// Здесь нет предупреждения
Наверное во втором случае выполняется Integer promotion, а в первом - нет.