以下程序的输出是什么?
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