gpt4 book ai didi

c - 为什么我不能将C代码中逻辑表达式的返回结果存储到变量中?

转载 作者:太空宇宙 更新时间:2023-11-04 04:14:30 24 4
gpt4 key购买 nike

我有一小段 C 代码的奇怪行为。我想将 bool 表达式的结果存储在变量中,但它似乎不起作用。

代码如下:

 #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));

我已经在 Nucleo 评估板上使用两个编译器 Renesas SH 9_4_1 和 gcc-arm non-eabi 测试了这段代码。在它们中,变量 rtb_y 始终为零。调试器显示表达式 (temp !=(rtCP_Constant_Value)) 为真,但我不明白为什么变量 rtb_y 始终等于零。

谁能解释一下为什么?这种奇怪的行为是因为我使用的 C 标准吗?

最佳答案

按照您使用宏的方式使用宏是一个非常糟糕的主意。一般来说,您需要非常小心,在正确的地方使用括号。你也不应该包括;在宏中。例如,这样更好:

#define rtCP_Constant_Value_fklq ((uint8_t) 1) //Simulink const

但是,实际上不可能为您的问题提供比这更多的帮助,因为由于包含 ;,您的示例将无法编译。如果您使用可编译的代码更新问题,可能会提供进一步的帮助。

关于c - 为什么我不能将C代码中逻辑表达式的返回结果存储到变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53447929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com