为什么我收到以下错误:
int i=0;
++i++;
这个错误是什么意思?
unexpected type ++i++;
required: variable
found: value
为什么我收到以下错误:
int i=0;
++i++;
这个错误是什么意思?
unexpected type ++i++;
required: variable
found: value
它是关于左值(左值)。左值是,“=”左侧的内容可以。此外,对于您可以赋予的价值。例如,不能给“4”赋值,但可以给“i”赋值。变量的表达式不仅仅是左值(一些非常深奥的编程语言除外)。
如果你写“++i++”,它将被解释为(++i)++或++(i++)。“i”是左值,但“i++”或“++i”不是,因为它们是表达式。
在 C++ 中,通过一些棘手的运算符重载和引用变量技巧,可以欺骗 C++ 编译器正确处理此问题。
由于++后缀和前缀具有相同的优先级,我们需要借助关联性来弄清楚发生了什么。
的关联性++是从右到左。
这意味着,从概念上讲,i++首先发生。但这当然是一个固定值(它是i增量之前的值)。因此,前缀++将失败,因为它不能对固定值进行操作。
++iori++可以用在变量上,但不能用在值上
i++
++i
可以,但是
2++
++2
不是。or 的结果++i也不i++是变量i而是值(例如 fori=1 i++会更改i为2但会返回 value 1)所以即使做类似的事情
(++i)++
将是不正确的,因为在++i您尝试使用++结果之后++i,例如2,您将尝试执行2++. 类似的情况发生在++(i++)
前缀和后缀版本都要求对变量而不是值执行操作。i您可以使用i++or递增变量,++i但不能递增5or 3.14。
++i++意味着您试图增加i一,然后将结果值增加一。有错误。
++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 在评论中指出的那样,您需要一些可以保存该值的变量。