if (0!=(~0xFF)) 条件应该不成立的怎么还会执行的

2020-02-04 09:18发布

#include<REGX52.H>

unsigned char i,j,k;

void main(void)
{

        j=0;
        k=~0xFF;

        if (0!=(~0xFF)) //左边是0 右边也是0 应该是相等的 条件不成立不执行i++的
        {
                i++;//但还是执行这了
        }

        if (j!=k) //都是0,条件不成立
        {
                i++; //这次就不执行的
        }

        while (1);


}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
27条回答
dr2001
1楼-- · 2020-02-07 14:56
经简单测试,对常数[0,0xFF],有[0,0x7F]不进行整型类型提升;[0x80,0xFF]进行整型类型提升。

这样的话,应该是Keil的一个Bug;或者Keil没有按照标准C实现。
xy80s
2楼-- · 2020-02-07 18:38
好贴,有学到了点东西!
millwood0
3楼-- · 2020-02-07 23:35
右边也是0


you need to read about type promotion in a good C book.

一周热门 更多>