本帖最后由 yting_xmei1129 于 2013-9-21 20:04 编辑
下面是代码:- public static void main(String[] args) {
- int x = 7;
- int y = 9;
-
- if(x++>7 & ++y>9) {
- System.out.println("this");
- x++;
- }
-
- System.out.println("x=" + x + ",y=" + y);
- }
复制代码 我记得饿当时看完了这个题目之后想着这题目好简单,饿的答案是:
this
x=9,y=10
然后一运行,才发现自己错了,x++这个的用法是先使用后自加,所以x=7>7 为false,然后重点来了,就是这个“&”符号让饿又犯了一次错误,这个“&” 不是 “&&”,他们的区别是很大的,“&” 和 “&&“ 都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。”&&“ 还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。但是这里使用的是“&”,前面判断为false,后面的表达式( ++y>9 )还是要执行的,所以y=10,这个题目真精辟,好容易犯错,你是不是也犯错了呢!一般初学者很容易犯错的、、、分享下经验、、、下面是运行结果--->
x=8,y=10
|
|