1.已知int i=1,j=2;则表达式i+++j的值为?
答:因为++运算符的优先级高于+,所以表达式为(i++)+j。对于i++来说,++后置,即先赋值,后自增。
所以i+++j=1+2=3;另外可以知道i=i+1=2;
2.已知int i=1,j=2;则表达式++i+j的值为?
答:同第1题的分析,++运算符高于+,++前置,即先自增,后赋值。
所以++i+j=2+2=4;另外i=i+1=2;
3.已知int i=0,j=1,k=2;则逻辑表达式 ++i || --j && ++k 的值为?
答:因为逻辑与 && 运算符的优先级高于逻辑或 || ,表达式为++i || (--j && ++k),
算出 || 左边的值为1,右边的值为0。即1 || 0 ,结果为 1 。答案为 1 。(想想如果是1 || 2 呢?见第4题)
4.执行下列语句:
int x,y;
x=y=1; ++x || ++y;
求 x ,y的值?
答:考察逻辑或 || 的结合性,其结合性为从左至右。首先左边的值为2。程序得到一个true值(1),即返回。
所以x=2; y=1; 如果 ++x || ++y; 换成 --x || ++y; 则x=0; y=2;
5.已知 int x=5;执行 x+=x-=x*x; 后,x的值为?
答:从右往左结合,首先是 x-=25=-20, 然后x+=(-20), 即-20+(-20) = -40 。所以 x = -40;