AI-32位8051 发表于 2023-2-7 13:58:20

使用楼主的方法实测证明C51编译器判断逻辑并没有问题,或许有其他隐藏问题没有找出,请楼主也发个简单的能触发判断错误的例程包出来,大家好一起分析。

梁工 发表于 2023-2-7 15:11:32

本帖最后由 梁工 于 2023-2-7 20:54 编辑

QQ624353765 发表于 2023-2-7 13:19
就是任何值为真,除了31和47
那就是“沙发”一楼的回复,两个判断都可以。

QQ624353765 发表于 2023-2-7 15:29:05

zhp 发表于 2023-2-7 13:23
对于你的代码,值为31和47时也为真(其实是所有的值都为真)
所以你不觉得是你的逻辑判断有问题吗? ...

我明白了
if ((P->CD_GunDong != 31) || (P->CD_GunDong != 47))
CD_GunDong =31时
判断CD_GunDong !=31假
在判断CD_GunDong !=47真
所有这个if判断是真
CD_GunDong =47时
判断CD_GunDong !=31真
所有if也是有效的

if ((P->CD_GunDong != 31) && (P->CD_GunDong != 47))
CD_GunDong =31时
if(假&&真)==假
CD_GunDong =47时
if(真&&假)==假

你要这样解释就容易明白了

神农鼎 发表于 2023-2-7 17:20:48

STCAI-32位8051 发表于 2023-2-7 13:58
使用楼主的方法实测证明C51编译器判断逻辑并没有问题,或许有其他隐藏问题没有找出,请楼主也发个简单的 ...

STC客服都这么厉害了,能给参考程序了 ?

QQ624353765 发表于 2023-2-7 19:43:12

STCAI-32位8051 发表于 2023-2-7 13:58
使用楼主的方法实测证明C51编译器判断逻辑并没有问题,或许有其他隐藏问题没有找出,请楼主也发个简单的 ...

解决了

创隆科技 发表于 2023-2-7 20:50:44

只要满足一个就执行?你的程序意思是不等于31或不等于47其他条件都执行
页: 1 [2]
查看完整版本: 这是C51语言的BUG吗