Java (a+;+;+;+;+;b)不';当(a+;+;-+;+;b)工作时,它不工作
为什么我会在这个程序中出错 如果我像这样将中间运算符更改为减号Java (a+;+;+;+;+;b)不';当(a+;+;-+;+;b)工作时,它不工作,java,prefix,postfix,Java,Prefix,Postfix,为什么我会在这个程序中出错 如果我像这样将中间运算符更改为减号(a++-++b),则它执行时没有任何错误: class Demo { public static void main(String []args){ int a=10; int b=20; System.out.println (a+++++b); } } 减号之所以有效,是因为它被标识为一个独立于加法序列的运算符。然而,加法似乎变成了一组运算符。如果您只
(a++-++b)
,则它执行时没有任何错误:
class Demo
{
public static void main(String []args){
int a=10;
int b=20;
System.out.println (a+++++b);
}
}
减号之所以有效,是因为它被标识为一个独立于加法序列的运算符。然而,加法似乎变成了一组运算符。如果您只是在加法符号之间添加一个空格,它应该可以正常工作,因为它将单独识别加法运算符。。例如System.out.println(a+++++b) //输出
三十一 我想你可能想要这个,不要使用+++,它在java中不是有效的运算符,
顺便说一句,您下次应该发布更好的问题。解析器无法看到您希望它看到的内容。你想让它看到吗
(a+++++b)
作为
但是,解析器将其视为
(a++++ +b)
因此,它抛出了一个编译错误,因为++操作符需要一个变量,但它得到了一个++,这是一个值
(a++-++b);
解析器知道,int上没有+-或-+运算符,因此它可以在(a++-+++b)中拆分表达式
为了
这可以是(a++…)或(a++…),但让我们先看一个更简单的表达式:
int a = 100;
int b = 0;
-> int c=a+++b;
| Added variable c of type int with initial value 100
期望的结果是什么?a++b还是a++b?好吧,它被解释为c=
(a++)+b;但这是一种糟糕的样式,因为您必须在head中包含运算符优先级的详细信息
是允许+++b,还是允许a++
-> ++++b;
| Error:
| unexpected type
| required: variable
| found: value
| ++++b;
| ^-^
-> a++++;
| Error:
| unexpected type
| required: variable
| found: value
| a++++;
| ^-^
不。为什么不呢?你可以说,它是(a+++++;或+++(++b);但这两个步骤都包括两个步骤,递增1并返回一个值,所以
a=100
b=0
c=a++;
c=++b;
我们知道,c将变成100或1,在一种情况下,返回在递增(c=a++)之前执行,在另一种情况下在(++b)之后执行
现在用+++b;或+++(++b)会发生什么;返回什么get
考虑到这一点,对a++b的唯一有效解释是a++++b;没有a++++b,也没有a++++b
a++b;可以:
-> c=a++ + ++b;
| Variable c has been assigned the value 101
但由于它很少使用,而且插入两个空格也没什么大不了的,而且更便于阅读,无论如何,我们应该忍受不一致的情况,即a+++++b被拒绝,而a++-+++b被允许,这并不能使后者成为一个好读的表达式。水平空格也使代码更适合人类,这应该是您的主要问题担心
如果你想让某人发疯,使用
c=a--- - --b;
因为有一元-,它可以方便地产生像-7这样的负值。这里,+运算符和++运算符具有相同的优先级(类似地,-和-,具有相同的优先级)。所以,+++和-,给出一个错误,因为它将被分为“+”和“++”(“-”和“--”) 为了解决这个错误,我们可以使用+(++)
希望对您有所帮助。正确设置代码段的格式,然后添加有关遇到的问题的详细信息编译器错误、运行时错误、完整消息、预期结果、收到的结果。
-++
或+-
也不是有效的运算符。
a=100
b=0
c=a++;
c=++b;
-> c=a++ + ++b;
| Variable c has been assigned the value 101
c=a--- - --b;