JAVA自增自减问题!高手进

大家看看我理解哪里错了,谢谢!
public class a
{
public static void main(String args[])
{
int i=5,m;
m=(i++)+(i++);
System.out.println(i);
System.out.println(m);

}
}
结果是I=7,M=11,
这句m=(i++)+(i++);中(i++)+(i++);里面的I有没有5这个数值?如果有的话那I就是(5+1)+(5+1)了,那I不是12吗?那M也是12啊!那我那里理解错了,请详细说下。我笨点 T T

我也来做个分解
结果应该为i = 7, m = 11
原因:方便表达期间,第一个i用i1表示,第二个用i2表示。
m = (i1++)+(i2++)
i1++,此时要加的是5,这个应该没有疑问,拿完5本身值之后i+1 ,也就是i1=5; i = 6
下一步:m = 5 + (i++); i = 6
所以m = 5 +6 =11, i ++完之后i为7

重点一句话:i++是拿到i值后再++
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-13
首先你要理解i++与++i 的不同
i++是指在使用过i的值后再让i+1,如 i=5; x=i++; 则此时x=5,i=6 x获取的是i+1前的值
如果是++i,则先让i+1,然后再使用i的值,如 i=5; x=++i; 此时x=6,i=6
int i=5,m;
m=(i++)+(i++);
相当于
i=5+1+1=7
m=5+6=11
如果你改成m=(++i)+(i++);
则m=6+6=12,i还是7
如果你改成m=(++i)+(++i);
则m=6+7=13,i还是7
如果你改成m=(i++)+(++i);
则m=5+7=12,i还是7
第2个回答  2011-07-13
m=(i++)+(i++);是指m=i的当前值,也就是m=5+6,第一次 i++后,就是6了,第二次i++后,i就是7了,而m用的是i在+1之前的值。 如果想用+1的值,就用++i,i先自动+1后,然后再将值付给m,m应该是13.追问

你自己运行下代码看看是不是13,乱说!!

追答

看来你不是一般的笨了!连13都不认识了!很无语!

追问

原来是我们“错了”,我电脑也算错了。你的脑袋比电脑还厉害。下面回答的都是错的。原来//////

追答

大哥!您看清楚我写的行吗!我说的是把i++改成++i,m的值是13!

本回答被提问者采纳
第3个回答  2011-07-13
int i=5,m;
m=(i++)+(i++);
看了两位的解释感觉不是很到位。所以我也说两句。其实i++这里的++不管有没有括号都是一样的结果,程序在运行的时候先是运算然后在自己++,哪么我们看下在运算之前第一个(i++)括号中在的值应该5吧,然后进行+,这时候i 已经自己++了所以i=6了那么在第二个中(i++)在运算之前的值是6所以m=5+6=11,然后i自己了所以i=7了。也就是7的结果
第4个回答  2011-07-13
因为里面有括号运算符所以先算括号里面的,在第一个括号里(i++)里的i为5,而第二个括号里(i++)中的i因为第一个括号的关系自增为6,当第二个括号运算完后,i自增为7.所以为(5)+(6)=11,所以m=11;i=7.

JAVA 自增自减运算符问题
首先,必须先弄清++(自增)和--(自减)运算符的基本用法先:++a:即先自加1之后再进行运算,程序中int b=++a;其中a的值为5,先自加1,也就是a为6,然后再赋值给b,那么b的值为6 a++:即先进行运算之后再自加1,如果程序中int b=a++;那么b的值为5.再来看程序就不难得出答案了:1 ...

JAVA 里面的 自运算符 ++和--是什么意思
++为自增运算,--为自减运算。例如定义变量 a a++为先取a的值进行操作然后a自增1;++a为a先自增1然后把增加后的a的新值取出进行操作。自减运算相同

java如何写自增、自减的代码
x++,2*x之间的符号叫做逗号运算符 逗号运算符两侧的计算顺序取决于编译器 有的编译器先将x+1再乘以2得到6 而有的编译器先将x乘以2得到4 在将x+1 楼主可以这样写 2 * x++; \/\/这样结果为42 * ++x; \/\/结构为6不过自增或自减语句最好单独写一行 ++x;2 * x;...

自增自减问题!
对最后一个说明:为什么是15,解释如下:n=3;printf("(++n)+(++n)+(++n)=%d\\n",(++n)+(++n)+(++n));式子: (++n)+(++n)+(++n)记号: (a) + (b) + (c)先计算(a),此时n=3,计算完a后,(a)=4,n=4;再计算(b),此时n=4,计算完b后,(b)=5,n=5;再计算(...

Java 设 x = 1 , y = 2 , z = 3,则表达式 y+=z--\/++x 的值
这道题需要搞明白自增自减以及在Java语言中基本数据类型的整型默认为int,浮点型默认为double,顾3\/2=1,整数除以整数,商自动取整,如下:

关于自增自减运算的一系列问题,求高手给我详细分析哈各个式子
首先,i的初始值未给出 其次,这是什么语言未给出 第三,假设i初始值为0,语言为c++,则下面一些式子的结果与实际运行不符 最后,你是有多纠结,才会去想这些东西...

自增自减I++问题
自己跑一下程序吧,编译器是最好的老师。include <stdio.h> void main(){ int i=0;printf("%d\\n",i++);printf("%d\\n",i);printf("%d\\n",++i);printf("%d\\n",i);} 结果是0,1,1,2。也就是说,第一个的i++是在printf语句执行完之后再i+=1的,而第三个的++i是在执行...

java的自增运算符和自减运算符是什么
自增与自减运算符还遵循以下规律:1. 可以用于整数类型byte、short、int、long,浮点类型float、double,以及字符串类型char。2. 在Java5.0及以上版本中,它们可以用于基本类型对应的包装器类Byte、Short、Integer、Long、Float、Double、Character。3. 它们的运算结果的类型与被运算的变量的类型相同。

JAVA里的‘++’ ‘--’怎么运算
++和--分别是自增自减运算符,作用就是给变量自动+1和-1的操作,它有两种用法,一种是++放在变量名的后面,比如:int i=0;System.out.println(i++);\/\/A 结果是0 System.out.println(i);\/\/B 结果是1 A这一行的意思就是在执行打印操作后,再给i加上1,所以A行的结果是0,B行的结果...

java中表达式!(++a!=b--)的值是?为什么?
先将a自增1,然后比较a的值和b是否相等,将比较的结果取反。最后将b自减1。

相似回答
大家正在搜