操作符在c++ /Java中的优先级



我一直在深入了解面向对象编程中的操作符优先级。代码如下:

int a=5;
int b=5;
printf("Output %d",a++>b);
return 0;

输出为output 0.

根据我的理解,一元操作符比关系操作符具有更高的优先级。所以a++>b不应该是6>5。这是真的。但是代码输出False。有人能告诉我为什么吗?

提前谢谢你。

你得到false,因为你在做a++时使用了后缀自增运算符,这在你的情况下导致比较5 > 5

后置自增操作符可以这样考虑。注意:这是非法的代码,只是为了演示:

class int {                 // if there had been an "int" class
int operator++(int) {   // postfix increment 
int copy = *this;   // make a copy of the current value
*this = *this + 1;  // add one to the int object
return copy;        // return the OLD value
}
};

如果您使用了前缀自增运算符++a,那么您将得到比较值6 > 5-因此得到结果true。前缀自增运算符可以这样考虑。非法代码:

class int {
int& operator++() {    // prefix increment
*this = *this + 1; // add one to the int object
return *this;      // return a reference to the actual object
}
};

相关内容

  • 没有找到相关文章

最新更新