A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public static void toHex(int num)//将10进制转换16进制的方法
{
      for (int x=0; x<8; x++)//int类型是4个8位,每次右移4位,只能右移8次,定义遍历8次
      {
             int temp = num&15;// 取出最后4位
             if (num&15>9)//如果大于9转化为字母
                     System.out.println((char)((num&15)-10+'A'));
             else
                     System.out.println(num&15);//不大于9直接打印
             num = num>>>4;
      }
}
打印出来,为什么只有 if (num&15>9),这里报错,改成if (temp>9),就好了,而后面的 num&15 不报错呢

QQ截图20150402225545.jpg (23.97 KB, 下载次数: 25)

报错

报错

6 个回复

倒序浏览
看这个图,上面那个是带备注的

QQ截图20150402230236.jpg (22.75 KB, 下载次数: 24)

QQ截图20150402230236.jpg
回复 使用道具 举报
运算符优先级的问题吧,你换成 if((num&15)>9) 应该可以的
回复 使用道具 举报
运算符优先级问题,'>'要高于‘&’两级,把“num&15”改为“(num&15)”可解决,课本运算符章节有提到“为了避免优先级别问题报错,编码时可把需优先处理的运算加上()”。
回复 使用道具 举报 1 0
z47057554 发表于 2015-4-2 23:50
运算符优先级的问题吧,你换成 if((num&15)>9) 应该可以的

噢噢,明白了,谢谢
回复 使用道具 举报
qq250144825 发表于 2015-4-3 00:04
运算符优先级问题,'>'要高于‘&’两级,把“num&15”改为“(num&15)”可解决,课本运算符章节有提到“为 ...

讲的太到位了,谢谢了
回复 使用道具 举报
关系运算符>的优先级大于位运算符&的优先级,一个数与一个布尔值位运算,就报错了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马