У меня странное поведение небольшого куска кода C.Я хочу сохранить результат логического выражения в переменной, но он, похоже, не работает.
После кода:
#define rtCP_Constant_Value_fklq (uint8_t) 1 //Simulink const
#define rtCP_Constant_Value (uint8_t) 0 //Simulink const
uint16_t rtb_tobit;
volatile unsigned char rtb_y;
uint8_t asr_ena_=14;
rtb_tobit = (1 << rtCP_Constant_Value_fklq);
uint8_t temp = ((uint8_t)rtb_tobit) & asr_ena_;
rtb_y = (temp !=(rtCP_Constant_Value));
Я протестировал этот фрагмент кода с двумя компиляторами,Renesas SH 9_4_1 и gcc-arm non-eabi на доске Nucleo eval.В обоих случаях переменная rtb_y
всегда равна нулю.Отладчик показывает, что выражение (temp !=(rtCP_Constant_Value))
верно, но я не могу понять почему, переменная rtb_y
всегда равна нулю.
Может кто-нибудь объяснить мне, почему?Это странное поведение из-за стандартов C, которые я использовал?