++表达式的结果

问题描述

问题1:publicclassTest{publicstaticvoidmain(String[]args){inta=2;System.out.println(a+3*a++);}}结果是8!不是9,求解!问题2:如果实现整形运算的四舍五入?请各位帮忙!

解决方案

解决方案二:
首先3*a=6然后6+2=8第二个问题我可能不太明白,整形运算怎么能四舍五入呢,没有小数点
解决方案三:
a=23*a=62+6=8a++-->a=3
解决方案四:
问题1:a+3*a++执行过程是:2+3*2++,按照运算规制是:先做3*2,然后a变为3,最后2+6=8。问题2:整形运算没有四舍五入,只有小数有。
解决方案五:
System.out.println(3*a+++a);结果是9,只是调换了a的位置。。。。why?
解决方案六:
3*a++=6此时a=36+a=6+3=9
解决方案七:
++a是先加1再取值a++是先取值後加1用一個取出值和現值來判斷就行a=22+3*2(a變成3)==8a=23*a+++a==>3*2(a變成3)+3==9floatf=0.5F;(int)f+(int)(2*f%2)=1;
解决方案八:
1st这个是考察的运算符的优先级,LZ看好就是了。2ndjava语言的强制转换不是数学上的4舍5入。真要实现的话,自己封装个函数,在里面根据小数位的值进行判断就是了。
解决方案九:
运算符优先级。。
解决方案十:
引用4楼oneluckyfish的回复:

System.out.println(3*a+++a);结果是9,只是调换了a的位置。。。。why?

这个顺序变化后结果是不相同的:3*a+++a这个表达式中先做3*a++得到6,完了后a变成了3,这时后面的a已经被更新为3,所以得到9;a+3*a++这个表达式中a刚开始都被初始化为2了(即使先执行3*a++也不会回过来更新前面的a),所以其实是2+6=8;执行完了后a才变为3了。四舍五入可以借助Bigdecimal解决,里面有好几种模式就包括四舍五入的。记不大清楚了,楼主可以自己查查api。。
解决方案十一:
一.2+3*2++=8二.NULL
解决方案十二:
9楼的好像是对的
解决方案十三:
9楼正解.
解决方案十四:
a++是运算完,a再加加。。。四舍五入用Math.roandom();
解决方案十五:
学习了。
解决方案:
九楼正解。。。
解决方案:
对于++a与a++可以这样简单的说,假设a=1,如果后面使用++a时,并且是第一次使用时,这是先将a的值加1,再使用。对于a++可以这样理解,如果后面使用a++时,并且是第一次使用时,这时a还是原来的值,但第二次再用到a时,这时就要将a的值先加1再使用。我所说的,你理解了,你就知道你写的程序的值为什么是8而不是9了……
解决方案:
必须的是8a+3*a++中最先执行的是++运算符而a++说明是先使用a在+1所以a+3*a++=2+3*2=8
解决方案:
同意13楼得..
解决方案:
比如a=2;i=a++;i的结果就是2因为++在后先把a的值赋给i然后a自己才开始++如果i=++a;i的结果就是3因为++在前先把a++了以后才赋值给i
解决方案:
引用9楼gray_sky的回复:

引用4楼oneluckyfish的回复:System.out.println(3*a+++a);结果是9,只是调换了a的位置。。。。why?这个顺序变化后结果是不相同的:3*a+++a这个表达式中先做3*a++得到6,完了后a变成了3,这时后面的a已经被更新为3,所以得到9;a+3*a++这个表达式中a刚开始都被初始化为2了(即使先执行……

同意,这个主要是运算符的顺序

时间: 2024-12-21 02:53:05

++表达式的结果的相关文章

PostgreSQL 索引虚拟列 - 表达式索引 - JOIN提速

标签 PostgreSQL , join , 表达式索引 , 虚拟列索引 , 静态数据 , immutable函数 背景 CASE: 使用虚拟索引,响应时间从2.3秒下降到0.3毫秒 业务系统在设计时,为了减少数据冗余,提升可读性,通常需要将不同的数据放到不同的表. 在查询时,通过多表JOIN来补齐需要查询或在过滤的内容. 比如这样的例子: 有两张表,分别有1千万和100万数据,当用户查询时,需要补齐那100万表中的某个字段进行过滤. create table a (id int, bid in

jsp-JSP中编写JS代码过程中,调用了一个JSP表达式,发现一个问题,麻烦各位大神解答

问题描述 JSP中编写JS代码过程中,调用了一个JSP表达式,发现一个问题,麻烦各位大神解答 背景: 楼主使用Myelipse新建了一个Web项目,在编写一个JSP文件的时候遇到一个问题,首先是使用了img,并且写了一个事件,代码如下: <imgclass="poke" src="poke/back.jpg" title="hit" id="play_id_3" onClick="change_pic()&qu

表达式-/ 100 + 3 * - 2 4 / 20 10

问题描述 / 100 + 3 * - 2 4 / 20 10 已知一个表达式的后缀形式是/ 100 + 3 * - 2 4 / 20 10求它的前缀形式? 解决方案 这就是前缀吧中缀是 100/(3+((2-4)*20/10))后缀 100 3 2 4 - 20 * 10 / + /

select-link能不能直接调用方法?还是只能写表达式?

问题描述 link能不能直接调用方法?还是只能写表达式? link能不能直接调用方法?还是只能写表达式? int[] array = { 1, 2, 3, 4, 5, 6, 7, 8 }; var query = from x in array where Predicate select x; foreach (int item in query) Console.WriteLine(item); bool Predicate(int n) { if (n % 2 == 0) return t

表达式计算器

1+2/3*(4-6)*6/8+9*2 = ? #include <stdio.h> #include <stdlib.h> #define MAXSIZE 32 typedef struct{ int data[MAXSIZE];//数据段 int top;//栈指针 }sqstack; sqstack *sqstack_create() { sqstack *sq; sq = malloc(sizeof(*sq)); if(sq == NULL ) { return NULL;

vc++2010创建项目失败,无法计算xxx处的属性表达式的值

问题描述 vc++2010创建项目失败,无法计算xxx处的属性表达式的值 vc++2010创建项目失败,报错如下图,求教高手提点. 解决方案 是新建的项目的话,建议重装下vs,再不行重装下系统.

话说模式匹配(5) for表达式中的模式匹配

在for表达式中 for(x <- collection) { balabala } 直觉上以为 x 就是个用于迭代每一个元素的局部变量. 我们看一些例子: scala> for(i <- List(1,2,3) ) {println(i)} // 看看语法树 scala> tb.parse("for(i <- List(1,2,3) ) {println(i)}") res2: tb.u.Tree = List(1, 2, 3).foreach(((i)

Swift使用闭包表达式

Swift中的闭包表达式很灵活,其标准语法格式如下:{ (参数列表) ->返回值类型 in    语句组}其中,参数列表与函数中的参数列表形式一样,返回值类型类似于函数中的返回值类型,但不同的是后面有in关键字.Swift提供了多种闭包简化写法,这一节我们将介绍几种不同的形式.1.类型推断简化类型推断是Swift的强项,Swift可以根据上下文环境推断出参数类型和返回值类型.以下代码是标准形式的闭包:{(a:Int, b:Int) -> Int in    return a + b}Swift

ACCESS表达式生成器

"+"."-"."*"."/"这几个符号就代表数学运算中的"加"."减"."乘"."除"四种运算符号.使用"&"符号可以使两个表达式强制连接在一起,比如: "数据库"&"使用指南" 将返回: "数据库使用指南",也就是将这两个字符串连接在一起,左面的字符

JavaScript 条件表达式深入学习

  js的条件表达式和其他语言一样,都采用了if else和switch这两种.由于不同的浏览器对流程控制进行了不同的优化.因此这两种在性能上是没有什么区别的,主要还是根据需求进行分析和选择. 如果条件较小的话选用if else比较合适. 相反,条件数量较大的话,就建议选用switch. 一般来说,if else适用于两个离散的值或者不同的值域.如果判断多个离散值,使用switch更加合适. 在大多数的情况下switch比if else运行的更加快. 恰当的使用 if 与 switch 当我们使