黑马程序员技术交流社区

标题: ++运算的问题? [打印本页]

作者: 王乐乐    时间: 2014-8-2 23:22
标题: ++运算的问题?
为什么
int a=1;
System.out.println(a++,++a);
输出2?
应该3啊,不是两次++吗?
作者: icris    时间: 2014-8-2 23:27
我觉得 println 好像没有两个参数的重载,是要报错的吧…
作者: as_heima    时间: 2014-8-2 23:31
直接报错的节奏~{:3_48:}
作者: 王乐乐    时间: 2014-8-2 23:31
icris 发表于 2014-8-2 23:27
我觉得 println 好像没有两个参数的重载,是要报错的吧…

人家,问我c++的问题,我直接改成java的了,错了。。。。。。哭
作者: conglin1991    时间: 2014-8-2 23:32
a++的值为a,然后a再加1 ++a的值是先加1,即它的值为a+1
作者: icris    时间: 2014-8-2 23:37
王乐乐 发表于 2014-8-2 23:31
人家,问我c++的问题,我直接改成java的了,错了。。。。。。哭
  1. int a = 1;
  2. System.out.println("" + a++ + ++a);
复制代码

输出 13
所以 java 没这个问题吧
作者: fantacyleo    时间: 2014-8-2 23:47
王乐乐 发表于 2014-8-2 23:31
人家,问我c++的问题,我直接改成java的了,错了。。。。。。哭

一来,Java的逗号运算符只能用在for循环的小括号中。二来,C/C++没有规定表达式的求值顺序,答案是任意的。
作者: s_gd    时间: 2014-8-3 00:16
前面a++是先打印a,所以=1,然后+1=2;a++是先加1再打印,所以是2+1=3
作者: 梧桐树下    时间: 2014-8-3 00:37
分两句打印,应该是3啊
作者: duzhong    时间: 2014-8-3 17:43
a++的值在调用时就是他本身,调用完之后+1。而++a是在调用前先+1。
作者: 挥斥方遒    时间: 2014-8-3 19:33
我觉得a++,++a 这两个是平行的,同时输出的。不是先后输出。。。
作者: kakasa    时间: 2014-8-3 19:45
报错。。
分开写的话
System.out.println(a++);//先打印a 接下来自增
System.out.println(++a);//先自增1 接下来在打印
结果是1  3

       
作者: 心之信子    时间: 2014-8-3 19:54
结果应为是1,3
作者: lcycr    时间: 2014-8-3 20:13
难道不报错?
作者: 南柯一梦    时间: 2014-8-3 21:40
因为输出语句中a++与++a都是同一个变量,输出当然一样
作者: jerom023    时间: 2014-8-3 22:22
println后面的参数是字符串啊,不是两个参数
作者: 晓风    时间: 2014-8-4 10:43
这里的会报编译错误,但是如果是正常语法下的编译的话,结果是:1和3。a++是先操作,在运算。++a是先运算,在操作。
作者: huanhuan    时间: 2014-8-4 17:12
(1)a++可以理解成为a=a+1;因为a=1,所以a++=2;
(2)++a是先自加1之后再输出结果,所以也是2
其中++代表自加1的意思,不是加了两次
作者: huanhuan    时间: 2014-8-4 17:19
在println里边好像不能有两个参数啊
作者: 申航航    时间: 2014-8-4 17:30
要是在java里运行会报错吧,
作者: 段金福    时间: 2014-8-4 17:31
a++是先用在+,++a是先+在用
作者: xiaoxiaofeng    时间: 2014-8-4 17:42
编译不能过啊,按语法说,应该是1,3
作者: 王乐乐    时间: 2014-8-5 08:54
huanhuan 发表于 2014-8-4 17:19
在println里边好像不能有两个参数啊

是的,已经验证了,编写有误。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2