初级会员

- 积分
- 118
- 金钱
- 118
- 注册时间
- 2017-5-6
- 在线时间
- 24 小时
|
1金钱
KEIL5中,写了这条语句,编译后一直报警,我感觉不到哪里出了问题?难道是编译器版本的问题么?
while(!(rev = DET_TUBE_STATUS_YING(&tmp_05_TUBE, &tmp_10_TUBE))); //报警的语句
函数声明:u8 DET_TUBE_STATUS_YING(u8* num_05, u8* num_10);
u8 rev = 0;
目前看,变量都是对的。我本意是这个函数DET_TUBE_STATUS_YING()返回0,一直执行;返回非零数,执行随后的语句。可是,还需要纪录返回值。
我知道,在C语言中,赋值表达式的值为左值的值。我的理解有偏差么?还是怎么了?
..\..\BSP\bsp_use.c(261): warning: #1293-D: assignment in condition
while(!(rev = DET_TUBE_STATUS_YING(&tmp_05_TUBE, &tmp_10_TUBE)));
问了度娘:出现这样的问题代码是可以继续正常执行的,但是写法不太严谨,因为在while/if的条件中,系统期望的是一个布尔类型的值,当表达式传递的结果非布尔值类型时,就会出现这样的警告。
可我,不是逻辑取反了么,怎么还不是bool类型。大家帮我看下,分析分析。谢了
|
|