需要lvalue作为增量操作数错误
lvalue required as increment operand error
#include <stdio.h>
int main()
{
int i = 10;
printf("%dn", ++(-i)); // <-- Error Here
}
++(-i)
出了什么问题?请澄清。
-i
生成一个临时的,并且不能将++
应用于临时的(作为右值表达式的结果生成的(。预增++
要求其操作数为左值,-i
不是左值,因此会出现错误。
++
运算符递增一个变量。(或者,更准确地说,左值,可以出现在赋值表达式的l左侧(
(-i)
不是一个变量,所以增加它是没有意义的。
您不能对没有标识的临时进行增量。你需要将其存储在某个东西中以增加它。你可以把l值看作是可以出现在表达式左侧的东西,但最终你需要把它看作是有标识但不能移动的东西(C++0x术语(。这意味着它有一个身份,一个参考,指的是一个物体,你想保留的东西。
(-i(没有身份,所以没有什么可以引用的。没有任何可以引用的,就没有办法在其中存储一些东西。你不能引用(-i(,因此,你不能递增它。
try i=-i+1
#include <stdio.h>
int main()
{
int i = 10;
printf("%dn", -i + 1); // <-- No Error Here
}
试试这个:
#include <stdio.h>
int main()
{
int i = 10;
printf("%dn", (++i) * -1);
}
相关文章:
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 错误:二进制'operator*' 'float'和'float[0]'类型的操作数无效
- 错误 C2679 二进制"<<":未找到采用类型为 'T' 的右侧操作数的运算符
- 错误:'operator>'不匹配(操作数类型为 'Student' 和 'Student'
- 如何摆脱逗号运算符的这个错误右操作数没有效果( wunsued 值)?
- c++ 错误:二进制"运算符+"类型"矩阵*"和"矩阵*"的操作数无效
- 使用堆栈编译错误的 C++ 反向行没有运算符匹配操作数
- 当我尝试构建此程序时,出现此错误:需要左键作为赋值的左操作数
- 错误:二进制">>":未找到采用类型为"const char [1] 的右操作数的运算符
- C++ 重载:[错误] 与'operator='不匹配(操作数类型为 'String' 和"字符串")
- 错误 C2679:二进制'<<':找不到采用类型 'overloaded-function' 的右侧操作数的运算符(或者没有可接受的转换)
- 我收到一个错误无效的操作数,类型为 const char [42] 和二进制"运算符+"的双倍数
- C++ 运算符不匹配操作数错误
- c++的cout操作数错误,类型错误
- 使用cin时,字符串上的右操作数错误
- OpenCV无效操作数错误
- 需要lvalue作为增量操作数错误
- C++无效操作数错误
- c++模板类冒泡排序操作数错误