永发信息网

判断a左移4位是否为0 这样写为什么错?if(a<<4)==0)

答案:2  悬赏:60  手机版
解决时间 2021-11-10 07:40
  • 提问者网友:你给我的爱
  • 2021-11-10 02:36
判断a左移4位是否为0 这样写为什么错?if(a<<4)==0)
最佳答案
  • 五星知识达人网友:你哪知我潦倒为你
  • 2021-11-10 04:01
少一个括号呀。

if((a<<4)==0)追问发问那里我写少了,我原意也是··if((a<<4)==0) 但就是 出来的结果不准,如果 用 if((a&0x0f)==0)就能达到我想的目的。不知道为什么if((a<<4)==0) 就不行?追答比如 0xf0 左移4位就会变成 0x00000f00
直接写 (a<<4) 就是表达一个32位的整数,所以它不为0。
非要这样写的话,应该有一个转换:

unsigned char c= a<<4;
if(c == 0)追问??? 我定义的a 也是 uchar 8位的噢?
全部回答
  • 1楼网友:孤独入客枕
  • 2021-11-10 04:16
if ((a<<4)==0)

代码应该如上

打少一个左括号会编译错误,这是c++语言选择语句常犯错误之一

希望能对你有帮助,望采纳,谢谢

追问发问那里我写少了,我原意也是··if((a<<4)==0) 但就是 出来的结果不准,如果 用 if((a&0x0f)==0)就能达到我想的目的。不知道为什么if((a<<4)==0) 就不行?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯