【发布时间】:2014-09-30 20:33:44
【问题描述】:
(注意:我有点偶然发现,所以可能不太实用,但我只是很好奇)
我想在增加第二个值之后打印出一个值,它是两个值的总和。像这样:
int first = 10;
int second = 20;
System.out.println(first + ++second); //31
System.out.println(first); //10
System.out.println(second); //21
也许不是最简洁的代码,但它确实有效。但后来,我开始尝试。
System.out.println(first +++ second); //30
System.out.println(first); //11
System.out.println(second); //21
没关系;这意味着第一个在添加后递增,并且此处的空格可以忽略。凉爽的。但是后来……
System.out.println(first +++++ second); //"Invalid Argument", doesn't work
虽然
System.out.println(first ++ + ++ second); //31
System.out.println(first); //11
System.out.println(second); //21
工作正常,但由于某种原因,仍然不同于
System.out.println(first + + + ++ second); //31
System.out.println(first); //10
System.out.println(second); //21
也许是最奇怪的,
System.out.println(first + + + + + + second); //30
System.out.println(first); //10
System.out.println(second); //20
那么这里发生了什么?什么时候忽略运算符之间的空格,什么时候不忽略?为什么我可以写“+ + + + +”,没有任何问题?
谢谢!
【问题讨论】:
-
如果你继续做奇怪的事情,你所有的朋友都会讨厌你:(
-
喜欢简单而不是好奇......
-
+++是三个不同的运算符。加法,前增量,后增量。 -
@Styl 呃,不!好奇心是优秀程序员的奇妙品质。我认为说“我永远不会在真正的代码中这样做,但我仍然对发生的事情感到好奇。”