use*_*439 2 java expression operators lvalue
为什么我收到错误:
int i=0;
++i++;
Run Code Online (Sandbox Code Playgroud)
这个错误是什么意思?
unexpected type ++i++;
required: variable
found: value
Run Code Online (Sandbox Code Playgroud)
这是关于左值(左值)的。左值是“=”左边留下的东西。另外,你可以赋予什么价值。例如,您不能为“4”赋值,但可以为“i”赋值。变量的表达式不仅仅是左值(一些非常深奥的编程语言除外)。
如果你写“++i++”,它将被解释为(++i)++或++(i++)。“i”是左值,但“i++”或“++i”不是,因为它们是表达式。
在 C++ 中,通过一些棘手的运算符重载和引用变量技巧,C++ 编译器可能会被欺骗以正确处理此问题。
++i
或者i++
可以用于变量,但不能用于值
i++
++i
Run Code Online (Sandbox Code Playgroud)
没问题,但是
2++
++2
Run Code Online (Sandbox Code Playgroud)
不是。
另外++i
or的结果i++
不是变量i
,而是其原始值(例如,当 时i=1
,i++
会更改i
为2
但会返回1
)。所以即使做类似的事情
(++i)++
Run Code Online (Sandbox Code Playgroud)
将是不正确的,因为在++i
您尝试使用++
其结果之后++i
,例如可能是2
. 这意味着您将尝试执行2++
.
类似的问题存在于以下情况++(i++)
归档时间: |
|
查看次数: |
601 次 |
最近记录: |