C语言优先级问题

NUC-94210 2012-07-12 09:40:16
问题,++a 和 a++ 一个是先++再引用,一个是先引用,再++。

b=a++; 等价于 b=a; a++;
但单目运算符 ++ 的优先级高于赋值运算符 = ,为什么不是这样: 而不是 b = (a++) ;

为何?
...全文
106 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
NUC-94210 2012-07-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

所以运算依然是先 ++;然后在 =。

计算顺序:
auto t = a;
a = a + 1;
b = t; // a ++ 返回的是++ 之前的临时变量。所以 a++ 是不可引用的。
[/Quote]

可以这样理解。
NUC-94210 2012-07-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

b = a++;
就是 b = (a++);
但是 a++ 这个表达是返回的是++ 之前的 a; 所以 b 是等于 ++ 之前的 a 的。
[/Quote]

这个才是正解!!
Saleayas 2012-07-12
  • 打赏
  • 举报
回复
所以运算依然是先 ++;然后在 =。

计算顺序:
auto t = a;
a = a + 1;
b = t; // a ++ 返回的是++ 之前的临时变量。所以 a++ 是不可引用的。
Saleayas 2012-07-12
  • 打赏
  • 举报
回复
b = a++;
就是 b = (a++);
但是 a++ 这个表达是返回的是++ 之前的 a; 所以 b 是等于 ++ 之前的 a 的。
W170532934 2012-07-12
  • 打赏
  • 举报
回复
应该是返回左值的问题吧。
huimiezu 2012-07-12
  • 打赏
  • 举报
回复
照楼主的意思,单目运算符优先级高于=,那么b=++a和b=a++是没区别了
艳琦罗生 2012-07-12
  • 打赏
  • 举报
回复
a++ 返回a再做a+1
++a 返回 a+1

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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