📌  相关文章
📜  增量(减量)运算符需要L值表达式

📅  最后修改于: 2021-05-25 23:09:47             🧑  作者: Mango

以下程序的输出是什么?

#include
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值,该值是预增量运算符的操作数。预增量运算符需要一个L值作为操作数,因此编译器将引发错误。

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

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

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。