关于优先级的小问题

Memocs 2006-01-13 10:43:17
int a=b=c=d0;
a = b++;
c = ++d;

上面的结果是a=0,b=1,c=1,d=1,这地球人都知道。

我的问题是,++递增运算符的优先级要高于=赋值运算符,那么为什么后缀递增运算符的计算要在赋值运算符之后呢?

谢谢
...全文
188 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Memocs 2006-01-13
  • 打赏
  • 举报
回复
to megaboy:为什么要先参加表达式计算呢,既然后增量运算符优先级比赋值符高,那理应先计算增量运算啊
megaboy 2006-01-13
  • 打赏
  • 举报
回复
对于后置递增运算符,是不是没有按照运算符的优先级来计算?那这个优先级表是不是应该修改了?
-----------------------------------------------
不是。后增量运算符的操作数得先参加表达式其余部分的计算,才进行自增量。
Memocs 2006-01-13
  • 打赏
  • 举报
回复
to ugg:也就是说,对于后置递增运算符,是不是没有按照运算符的优先级来计算?那这个优先级表是不是应该修改了?
iamcaicainiao 2006-01-13
  • 打赏
  • 举报
回复
b++的意思就是这句话中b还没有++
执行完毕当前语句,比如a = b++;之后,
b才进行++运算呢。
Camelh 2006-01-13
  • 打赏
  • 举报
回复
后缀递增运算符--相当于先取其值到临时变量,然后再将其本身做++运算,最后再把临时变量的值赋给左边的变量;
逸学堂 2006-01-13
  • 打赏
  • 举报
回复
开始的时候先++和后++没有什么区别
后来++运算符改变了,以下是运算符++实现的伟代码
T operator ++(int)// 先++
{
T t(*this)
++this;
returen t;
}
T& operator ++()// 后++
{
*this += 1;
return(&this);
}

楼主看看汇编就知道++,运算符号的不同含义了!
参考一片文章
http://www.exuetang.net/article/View.aspx?NewsID=115
Memocs 2006-01-13
  • 打赏
  • 举报
回复
sorry 第一句应该是 int a=b=c=d=0; 不过我相信大家都能看明白
iwantfat 2006-01-13
  • 打赏
  • 举报
回复
c = ++d;//d先进行加1然后将,将加1的值直接付给当前的d使用,所以此时d已经加1了
iwantfat 2006-01-13
  • 打赏
  • 举报
回复
int a=b=c=d=0;//a b c d 全部赋为0

a = b++;// b是先进行加1了,但是加1的值只能在下一次使用b的时候使用 ,所以当前b赋给a的仍然是0,而下次使用b的时候b已经加1了

c = ++d;//d先进行加1然后将,将加1的值直接付给当前的b使用,所以此时b已经加1了
-------------------

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧