偶尔间看到一个面试题:如下别打印 口算结果,分析一下,谁讲的好就得分
int a = 2;
int s1 = a + 3 * a++;
int s1 = (a++) + 3 * a;
2个s1分别是多少
int a = 2;
int s1 = a + 3 * a++;
int s1 = (a++) + 3 * a;
2个s1分别是多少
解决方案 »
- Spring Aop 对 Annonation 的处理。
- 在struts里,已经在filter里设置 Globals.LOCALE_KEY 的情况下,为什么<bean:message>还只输出zh_CN里的内容呢
- 招聘
- struts 中传参数问题。
- 各位大虾,有一个java,mvc程序,帮忙调试,100分献上,外加50元,很急!!
- 关于eclipse3.0里的tomcat启动的很奇怪问题,请大家帮忙!up有分,在线等!!
- 哪个高手帮帮忙!!!!
- 关于tomcat的集群问题,大家进来看看
- 怎么让tomcat后台运行
- struts2 模型驱动 json 只能返回模型数据?
- Java DB操作类的设计代码
- 求助基于java的GIS开发环境搭建
a++表示的是a=2先进行计算,计算完毕之后a加上1;也就是s1求完之后a的值就变为3;第二个s1=(3++)+3*3=12;
该题应该考的是++这个运算符和各个运算符的优先级。
不知道分析的对不对
int s1 = a + 3 * a++;
int s1 = (a++) + 3 * a;
2个s1分别是多少?
首先我们来了解一下a++与++a的概念,a++也就是先运算再自加,++a就是先自加,在运算,那么接下来的题目就简单了!
int s1 = a + 3 * a++; 初始值a=2,s1=2+3*(2++); 第一次s1值得到的表达式为s1=2+3*2,结果为8;再这步运算好后,a的值就变为3;那么第二个表达式int s1 = (a++) + 3 * a变为s1=(3++)+3*3=12;
第二个 11,是 先a = a + 1;因为是先取值,再自增,所以 s1 = 2 + 3 * 3=11; 之所以是3* 3是因为s1 = (a++) + 3 * a ; (a++)在前面。如果换成(a++)在后面s1 = 3 * a + (a++);结果就是 s1 = 3 * 2 + 2 = 8。
如果换成 s1 = 3 * a + (++a);结果就是 s1 = 3 * 2 + 3 =9;
本人菜鸟,连个最基本的字符串转ASCII都写不出来,感觉这个面试官很脑残,脑残到家了,不知道分析的对不对
第二个 11,是 先a = a + 1;因为是先取值,再自增,所以 s1 = 2 + 3 * 3=11; 之所以是3* 3是因为s1 = (a++) + 3 * a ; (a++)在前面。如果换成(a++)在后面s1 = 3 * a + (a++);结果就是 s1 = 3 * 2 + 2 = 8。
如果换成 s1 = 3 * a + (++a);结果就是 s1 = 3 * 2 + 3 =9;
顶下