永发信息网

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) 非真,即零 结果一样。

总而言,主要是考查 各运算符的优先级。即 ==(算术运算) 的优先级 高于 &&(逻辑运算)

希望对您有所帮助!
全部回答
  • 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,只有真和假
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯