while(busy&&0x80)跟while(busy&&0x80==1)为什么结果不同
答案:3 悬赏:60 手机版
解决时间 2021-02-03 19:15
- 提问者网友:放下
- 2021-02-02 21:15
while(busy&&0x80)跟while(busy&&0x80==1)为什么结果不同
最佳答案
- 五星知识达人网友:人间朝暮
- 2021-02-02 21:44
0x80代表十进制的128,即128≠0。
如果变量busy≠0,则busy&&0x80的值为1,即非零
→ 而 busy&&0x80==1这句等价于 busy && (0x80==1) 为假, 值为零 结果不一样。
如果变量busy=0,则busy&&0x80等价于 0 && 1,即为零
→而 busy&&0x80==1这句可以看做是 0 && (128==1) 非真,即零 结果一样。
总而言,主要是考查 各运算符的优先级。即 ==(算术运算) 的优先级 高于 &&(逻辑运算)
希望对您有所帮助!
如果变量busy≠0,则busy&&0x80的值为1,即非零
→ 而 busy&&0x80==1这句等价于 busy && (0x80==1) 为假, 值为零 结果不一样。
如果变量busy=0,则busy&&0x80等价于 0 && 1,即为零
→而 busy&&0x80==1这句可以看做是 0 && (128==1) 非真,即零 结果一样。
总而言,主要是考查 各运算符的优先级。即 ==(算术运算) 的优先级 高于 &&(逻辑运算)
希望对您有所帮助!
全部回答
- 1楼网友:長槍戰八方
- 2021-02-02 23:17
我用的是这些:
void lcdwritecom(unsigned char com) //写入命令
{
rs=0;
rw=0;
gpio_lcd=com;
delay(1);
e=1;
delay(1);
e=0;
}
void lcdwritedata(unsigned char dat) //写入数据
{
rs=1;
rw=0;
gpio_lcd=dat;
delay(1);
e=1;
delay(1);
e=0;
}
void lcdinit(void)
{
lcdwritecom(0x38); //开显示
lcdwritecom(0x0c); //开显示不显示光标
lcdwritecom(0x06); //写一个指针加1
lcdwritecom(0x01); //清屏
lcdwritecom(0x80); //设置数据指针起点
}
- 2楼网友:白昼之月
- 2021-02-02 22:20
busy&&0x80结果是一个数值,会自动转换为boolean,非零都被当做真
busy&&0x80==1结果是一个boolean,只有真和假
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯