Dan*_* B. -3 java increment char println
char char1 = 'a';
System.out.println(char1); //prints char 1
System.out.println(char1+1); //prints char 1
System.out.println(char1++); //prints char 1
System.out.println(char1+=1); //prints incremented char1
char1 += 1;
System.out.println(char1); //prints incremented char1
Run Code Online (Sandbox Code Playgroud)
在上面,为什么不(char1 + 1)或(char ++)打印增量字符,而另外两个呢?
首先,我假设因为你说工作中的增量System.out.println,你确实指定了:
char char1 = 'a';
Run Code Online (Sandbox Code Playgroud)
编辑
为了回应问题的变化(char1+1;=> char1 += 1;),我看到了问题.输出是
a
98
b
Run Code Online (Sandbox Code Playgroud)
该98节目了,因为炭a被提升到一个int(二进制数值提升)加1,因此a成为97(为ASCII值'a')和98分的结果.
但是,char1 += 1;或者char1++不执行二进制数字提升,因此它按预期工作.
应用扩展基元转换(第5.1.2节)来转换由以下规则指定的一个或两个操作数:
如果任一操作数的类型为double,则另一个操作数转换为double.
否则,如果任一操作数的类型为float,则另一个操作数转换为float.
否则,如果任一操作数的类型为long,则另一个操作数转换为long.
否则,两个操作数都将转换为int类型.
(强调我的)
| 归档时间: |
|
| 查看次数: |
7208 次 |
| 最近记录: |