黑马程序员技术交流社区
标题:
设 a = 3,则表达式 int b = (a-- )<<a,求出b的值
[打印本页]
作者:
次长风
时间:
2013-12-24 17:02
标题:
设 a = 3,则表达式 int b = (a-- )<<a,求出b的值
结果为什么是12呢,不应该是先算括号里面的吗,之后a不应该等于2吗,
作者:
2013_ok
时间:
2013-12-24 17:32
运行:
int a=3;
int b=(a--)<<a;//相当于 int b=3<<2; <<左移运算,左移的规则只记住一点:丢弃最高位,0补最低位
System.out.println(a+"-"+b);//所以输出结果是12
作者:
程玉习
时间:
2013-12-25 12:34
括号里的a--先赋值后运算,其值还是3,而后的a为运算后,a=2 ;所以是 int b = 3<<2; 左移快捷算法,b = 3*2(2)(2的左移位数次幂) = 12;
作者:
次长风
时间:
2013-12-25 14:03
程玉习 发表于 2013-12-25 12:34
括号里的a--先赋值后运算,其值还是3,而后的a为运算后,a=2 ;所以是 int b = 3 ...
谢谢,圣诞节快乐!
作者:
由然自美
时间:
2013-12-27 12:13
因为--在后面,所以是先得出结果才自减,(a--)中的a的值在此刻并没有改变,还是3,3 <<2结果是12,b的值是12.此刻a才会自减变成了2
作者:
lipanquan
时间:
2014-1-3 19:24
a = 3,则表达式 int b = (a-- )<<a,
先算()里面的= 3,再算<<a,这时的a=2;
0x11(=3) << 2 == 0x1100
=2^3+2^2 = 12
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2