1. 主页
  2. 文档
  3. C语言教程
  4. C语言运算符
  5. 递增(递减)运算符需要 L 值表达式

递增(递减)运算符需要 L 值表达式

以下程序的输出将是什么?

#include<stdio.h>
int main()
{
int i = 10;
printf("%d", ++(-i));
return 0;
}
A) 11 B) 10 C) -9 D) None

答案: D,无——编译错误。

解释:

在 C/C++ 中,前置递增(递减)和后置递增(递减)运算符需要 L 值表达式作为操作数。提供R 值const限定变量会导致编译错误。

在上面的程序中,表达式-i 的结果是 R-value,它是预递增运算符的操作数。预增量运算符需要一个 L 值作为操作数,因此编译器会抛出错误。

递增/递减运算符需要在序列点之后更新操作数,因此它们需要一个 L 值。一元运算符(如 -、+)不需要 L 值作为操作数。表达式-(++i)有效。

在 C++ 中,由于引用,规则有点复杂。我们可以将这些前/后递增(递减)运算符应用于未由const限定的引用变量。引用也可以从函数返回。

 

 

这篇文章对您有用吗?