黑马程序员技术交流社区
标题:
论坛提问
[打印本页]
作者:
刘永贵
时间:
2014-3-16 16:12
标题:
论坛提问
a=3 (--a)<<a的结果是什么
作者:
optimisticpig
时间:
2014-3-16 16:43
(--a)<<a结果应该是8吧,a先自减一次,然后左移3位。
作者:
蓝枫
时间:
2014-3-16 16:49
本帖最后由 蓝枫 于 2014-3-16 17:53 编辑
奥,现在明白
作者:
上官睿鹏
时间:
2014-3-16 16:57
本帖最后由 上官睿鹏 于 2014-3-16 16:58 编辑
这个自己写个小程序运行一下就可以知道结果了
class Demo
{
public static void main(String[] args)
{
int a = 3;
int i = (--a)<<a; //--a是2后面的a也变成2了,所以是0010向左移2位变成1000
System.out.println(i); //打印结果为 8
}
}
复制代码
作者:
ok-Prince
时间:
2014-3-16 17:20
结果是8,--a,是先进行自减,再把结果赋值给a,所以说--a<<a就相当于2<<2,2右移两位,也就是2*2的2次方,结果是8.
作者:
のソ夏末
时间:
2014-3-16 17:21
int a=3;
int (--a)<<a;
关键是要对(--a)<<a运算的拆分,可以拆分为int a=a-1,a<<a,
a自减后所赋值给a的值一直延续到最后,所以左移的位数应该是2,而不是3。
最终结果应该是8 2<<2,相当于2*2²=8。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2