以下程序的输出是什么?
#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基础课程》。