读书人

从增运算符的困惑求指导

发布时间: 2012-09-29 10:30:01 作者: rapoo

自增运算符的困惑,求指导
int j=0;
int i=j++;
我知道这个运算是先把j的值给i,再把j自加。
但是现在有点疑惑,++运算符的优先级不是比=运算符的优先级高吗?这样不是矛盾吗?


[解决办法]
#如1楼所说,这里不是赋值,是初始化

改成如下再讨论
int i;
i=j++;

那么这里优先级的作用,是使得这行不必写成 i=(j++);

如果=的优先级高的话,则会等价于(i=j)++;
[解决办法]
这个里面++运算符确实是先运算了,但是j++的意思是在表达式中先去j的值用,然后j的值再自增一,
#include<iostream.h>

int main()
{
int j=0;
int i=(j++);
cout<<i<<endl;
}
对j++加括号,使其先运算,输出值依然是0。

读书人网 >C++

热点推荐