java前缀/后缀运算符

java前缀/后缀运算符,java,operators,expression,lvalue,Java,Operators,Expression,Lvalue,为什么我会在以下方面出错: int i=0; ++i++; 这个错误意味着什么 unexpected type ++i++; required: variable found: value ++i++无效。一次只能做一件事++或后缀中的++。 我看到您正试图将值增加2。您可以按如下方式执行此操作: i++ // will post-increment the value of i ++i // will pre-increment

为什么我会在以下方面出错:

int i=0;
++i++;
这个错误意味着什么

  unexpected type ++i++;                    
  required: variable  
  found:    value

++i++无效。一次只能做一件事<前缀中的代码>++
或后缀中的
++

我看到您正试图将值增加2。您可以按如下方式执行此操作:

i++ // will post-increment the value of i
++i // will pre-increment the value of i  

i++
i=i+1
i+=1
相同。因此,正如Sotirios Delimanolis在评论中指出的那样,您需要一些可以保存该值的变量

++i++无效。一次只能做一件事<前缀中的代码>++
或后缀中的
++

我看到您正试图将值增加2。您可以按如下方式执行此操作:

i++ // will post-increment the value of i
++i // will pre-increment the value of i  

i++
i=i+1
i+=1
相同。因此,正如Sotirios Delimanolis在评论中指出的那样,您需要一些可以保存该值的变量

前缀和后缀版本都要求对变量而不是值执行操作。可以使用
i++
++i
增加变量
i
,但不能增加
5
3.14


++i++
表示您试图将
i
增加1,然后将得到的值增加1。出现错误。

前缀和后缀版本都要求对变量而不是值执行操作。可以使用
i++
++i
增加变量
i
,但不能增加
5
3.14

++i++
表示您试图将
i
增加1,然后将得到的值增加1。有一个错误。

是关于左值(left value)。左值是,在“=”的左边可以保留什么。还有,你能给什么一个价值。例如,不能给“4”赋值,但可以给“i”赋值。变量的表达式不仅仅是左值(除了一些非常深奥的编程语言)

如果您写“++i++”,它将被解释为(+i)++或++(i++)。“i”是左值,但“i++”或“++i”不是,因为它们是表达式

<>在C++中,使用一些棘手的操作符重载和引用变量技巧,可以欺骗C++编译器来正确处理。

是关于Lvalue(左值)。左值是,在“=”的左边可以保留什么。还有,你能给什么一个价值。例如,不能给“4”赋值,但可以给“i”赋值。变量的表达式不仅仅是左值(除了一些非常深奥的编程语言)

如果您写“++i++”,它将被解释为(+i)++或++(i++)。“i”是左值,但“i++”或“++i”不是,因为它们是表达式


<>在C++中,使用一些棘手的运算符重载和引用变量技巧,可以欺骗C++编译器来正确处理这个问题。

自从代码“>++//<代码>后缀和前缀具有相同的优先级,我们需要求助于关联性来了解正在发生的事情。”

++
的关联性是从右向左的


这意味着,从概念上讲,
i++
首先发生。当然,这是一个固定的(它是增量之前
i
的值)。因此前缀
++
将失败,因为它无法对固定值进行操作。

由于
++
后缀和前缀具有相同的优先级,我们需要借助于关联性来了解发生了什么

++
的关联性是从右向左的


这意味着,从概念上讲,
i++
首先发生。当然,这是一个固定的(它是增量之前
i
的值)。因此前缀
++
将失败,因为它无法对固定值进行操作。

++i
i++
可用于变量,但不能用于值

i++
++i
没关系,但是

2++
++2
事实并非如此。另外,
++i
i++
的结果不是可变的
i
,而是值(如
i=1
i++
会将
i
更改为
2
,但会返回值
1
),所以即使执行类似的操作

(++i)++

这是不正确的,因为在
++i
之后,您将尝试对
++i
的结果使用
++
,例如
2
,因此您将尝试执行
2++
。类似的情况也适用于
++(i++)
++i
i++
可用于变量,但不能用于值

i++
++i
没关系,但是

2++
++2
事实并非如此。另外,
++i
i++
的结果不是可变的
i
,而是值(如
i=1
i++
会将
i
更改为
2
,但会返回值
1
),所以即使执行类似的操作

(++i)++

这是不正确的,因为在
++i
之后,您将尝试对
++i
的结果使用
++
,例如
2
,因此您将尝试执行
2++
。类似的情况发生在
++(i++)

++i
解析为一个值。不能将运算符
++
应用于值。没有前缀和后缀++i++组合的类型;考虑到答案,我认为这是一个非常有趣的问题。为什么不投票?
++i
解析为一个值。不能将运算符
++
应用于值。没有前缀和后缀++i++组合的类型;考虑到答案,我认为这是一个非常有趣的问题。为什么要投反对票?在我看来,投反对票的是问题的质量/努力。由于联想性,它总是被解释为++(i++),但在谈论左值时,它总是被解释为+1。在我看来,投反对票的是问题的质量/努力。它总是