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

以下程序的输出是什么?

null

#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值 或者 康斯特 限定变量会导致编译错误。

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

递增/递减运算符需要在 序列点 所以他们需要一个L值。一元运算符(如-、+)不需要L值作为操作数。表情 -(++i) 这是有效的。

在C++中,由于引用的原因,规则很少复杂。我们可以将这些前置/后置增量(减量)运算符应用于引用变量,这些变量不符合 康斯特 。也可以从函数返回引用。

字谜 文基 。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请发表评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享