【问题标题】:l value required as increment operand [duplicate]l 需要作为增量操作数的值[重复]
【发布时间】:2014-10-17 20:48:06
【问题描述】:

谁能解释一下程序中的编译错误

#include<stdio.h>
int main()
{
   int i = 10;
   printf("%d", ++(-i));
   return 0;
}

【问题讨论】:

  • -i 根本不是左值,而是右值。
  • ++(-i) => ++(-10) : 不能将增量的结果赋给-10。
  • 有趣的是,这个问题与this question... 几乎是完全重复的……除了它是从 C++ 移植到 C 的。
  • @DarkDust:现在完全复制了。

标签: c increment lvalue rvalue pre-increment


【解决方案1】:

-i 的结果是 r 值,而不是 l 值。您不能使用 ++-- 运算符增加 r 值;你只能增加一个左值。

大致而言,左值可能出现在赋值的 LHS(左侧)上。你不能写:

-i = -i + 1;

出于同样的原因,你不能写++(-i)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2014-04-07
    • 2012-10-01
    • 2013-06-05
    • 2020-10-06
    • 2021-05-11
    • 1970-01-01
    相关资源
    最近更新 更多