黑马程序员技术交流社区

标题: 求解! [打印本页]

作者: 让寒风吹吧    时间: 2015-6-2 20:51
标题: 求解!
这是哪里错了?求解!

QQ截图20150602204831.png (45.43 KB, 下载次数: 3)

QQ截图20150602204831.png

作者: 山崩地裂    时间: 2015-6-2 21:22
  1. class Test{
  2.         public static void main(String[] args){
  3.                 int count =  0;
  4.                 for(int i = 0; i <= 100; i++){
  5.                         if(i%7 == 0){
  6.                                 count++;
  7.                         }
  8.                 }
  9.                 System.out.println(count);
  10.         }
  11. }
复制代码

这样写没错
作者: 海角秋风    时间: 2015-6-2 21:23
我运行了一下你这个,发现确实有错误。


把运算单独取出来的运行的话,


输出的结果就是




所以个人理解是:
x&7是运算过程,它没有赋值给任何量,不能直接参与判断。


作者: 少年闰土    时间: 2015-6-2 21:33
这涉及到运算符的优先级,在76行
if(x & 7 == 0)
这行程序中,由于运算符==的优先级要高于运算符&,所以首先会做 7==0 运算,运算结果是boolean值false,然后等效成
if (x&false)而位运算符&不能对boolean做运算,所以会编译出错。
其实,原程序可以等效成
if(x & (7 ==0 ))


作者: an_lucas    时间: 2015-6-2 21:42
if((x&7)==0)
作者: an_lucas    时间: 2015-6-2 21:44
if((x&7)==0)
作者: 山崩地裂    时间: 2015-6-2 22:59
海角秋风 发表于 2015-6-2 21:23
我运行了一下你这个,发现确实有错误。

看错了,把&看成%
要看运算符的优先级

捕获.PNG (117.83 KB, 下载次数: 8)

捕获.PNG

作者: 海角秋风    时间: 2015-6-3 00:32
山崩地裂 发表于 2015-6-2 22:59
看错了,把&看成%
要看运算符的优先级

学习了,谢谢。。。
作者: ZYZQ    时间: 2015-6-3 00:57
少年闰土 发表于 2015-6-2 21:33
这涉及到运算符的优先级,在76行
if(x & 7 == 0)
这行程序中,由于运算符==的优先级要高于运算符&,所以 ...

令人信服
作者: wuyusi    时间: 2015-6-3 08:21
学习了,感谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2