黑马程序员技术交流社区
标题:
有关先加和后加问题求解
[打印本页]
作者:
许飞翔
时间:
2012-3-15 23:20
标题:
有关先加和后加问题求解
class Test
{
public static void main(String[] args)
{
int k = 0;
int b = ++k + k++ + ++k + k;
System.out.println(b);
}
}
复制代码
结果是8.为什么是这个结果?详细步骤是怎样的?
作者:
房宝彬
时间:
2012-3-15 23:25
int b = ++k + k++ + ++k + k;
1 1 3 3
作者:
倪鹏博
时间:
2012-3-15 23:30
本帖最后由 倪鹏博 于 2012-3-15 23:34 编辑
++k是先自加再用于计算,k++刚好相反是先用于计算再自加
所以:
int b=
++k //先自加再运算,所以参与运算的时候k=1
+ k++ //先运算再自加,所以参与运算的时候k=1,之后k=2
+ ++k //先自加再运算,所以参与运算的时候k=3
+ k; //k=3
综上, b=8
作者:
李爱军
时间:
2012-3-15 23:40
本帖最后由 李爱军 于 2012-3-15 23:42 编辑
版主回答的简洁明了,呵呵,我作下解释把
int b = (++k1) + (k2++ )+ (++k3) + k4;
为了方便我做了如上标记和分割
先要明确下面几点
1,++k:先引用k的值在使k的值增加1;
2,k++;先使k的值增加1,在赋给k;
3,++的运算优先级比+高
++k1-->k1=0+1
k2++ -->k2=k1,再次引用k2的值就是k2=k1+1=2
++k3-->k3=k2+1=3
k4=k3=3;
最后算简单的加法 int b=1+1+3+3;
作者:
冯建鹏
时间:
2012-3-15 23:45
++k:是将k的值加1 以后再参加运算
k++:是先将k的值参加运算后再加1;
int b = ++k + k++ + ++k + k;//这句话运行到第一个++k,这时候k的值是1,下个+k++这个时候的k还是1参与运算的,当运算完后这个时候K的值就是2,+++k这个时候的k就是3,下个+k,k的值还是3. 所以运算结果就是1+1+3+3=8
作者:
刘_浩
时间:
2012-3-16 00:28
标题:
RE: 有关先加和后加问题求解
本帖最后由 liuhao411 于 2012-3-16 00:29 编辑
我认为很简单,分成4部分,加括号就容易区分了。分别为1 1 3 3就行了。
作者:
a504079589
时间:
2012-3-16 01:50
int k = 0;
int b = ++k + k++ + ++k + k;
最开始给k赋值为0; ++k 是先加再运算 (int b = ++k) = 1;
( + k++ )是先运算在加1 这时候 (int b = ++k + k++ ) 等于{int b = 1 + ( 0+1)};
(+ ++k) 第一个k和第二个k运算后,第三个k没元算本身就等于2 由于是先加1在运算,所以{int b = ++k + k++ + ++k} 等于{int b = 1 + ( 0+1) + (1+2)};
(+ k)第四个k没有做任何的加1, 第三个k运算完了已经等于3了, 所以第四个k就等于3, {int b = ++k + k++ + ++k + k}={(1) + (1) + (3) + (3)}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2