A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王乐乐 中级黑马   /  2014-8-2 23:22  /  2182 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么
int a=1;
System.out.println(a++,++a);
输出2?
应该3啊,不是两次++吗?

22 个回复

倒序浏览
我觉得 println 好像没有两个参数的重载,是要报错的吧…
回复 使用道具 举报 2 0
直接报错的节奏~{:3_48:}
回复 使用道具 举报
icris 发表于 2014-8-2 23:27
我觉得 println 好像没有两个参数的重载,是要报错的吧…

人家,问我c++的问题,我直接改成java的了,错了。。。。。。哭
回复 使用道具 举报
a++的值为a,然后a再加1 ++a的值是先加1,即它的值为a+1
回复 使用道具 举报
王乐乐 发表于 2014-8-2 23:31
人家,问我c++的问题,我直接改成java的了,错了。。。。。。哭
  1. int a = 1;
  2. System.out.println("" + a++ + ++a);
复制代码

输出 13
所以 java 没这个问题吧
回复 使用道具 举报
王乐乐 发表于 2014-8-2 23:31
人家,问我c++的问题,我直接改成java的了,错了。。。。。。哭

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

       
回复 使用道具 举报
结果应为是1,3
回复 使用道具 举报
难道不报错?
回复 使用道具 举报
因为输出语句中a++与++a都是同一个变量,输出当然一样
回复 使用道具 举报
println后面的参数是字符串啊,不是两个参数
回复 使用道具 举报
这里的会报编译错误,但是如果是正常语法下的编译的话,结果是:1和3。a++是先操作,在运算。++a是先运算,在操作。
回复 使用道具 举报
(1)a++可以理解成为a=a+1;因为a=1,所以a++=2;
(2)++a是先自加1之后再输出结果,所以也是2
其中++代表自加1的意思,不是加了两次
回复 使用道具 举报
在println里边好像不能有两个参数啊
回复 使用道具 举报
要是在java里运行会报错吧,
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马