c语言运算问题

congicong 2009-05-11 07:59:13
是否有自加自减参加的式子里都应该按自右至左的顺序来做?
...全文
86 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
make026 2009-05-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 congicong 的帖子:]
是否有自加自减参加的式子里都应该按自右至左的顺序来做?
[/Quote]

这个要看运算符(operator)与优先级(precedence),还要看运算顺序,有些是由左至右(Left to Right),有些是由右至左(Right to Left)。
下面的网页中,越上面的operator优先级越高,遇到有空格优先级就减少一级,没有空格就代表相同的优先级。
例如:++ 与 -- 就是相同优先级,:: 与 . 就差一级。

http://msdn.microsoft.com/en-us/library/126fe14k.aspx

例如:
i = 3 + 2 - 1;
i的结果为4
其中operator的优先级,
+与-相同,比=大,所以要先算+与-两边的操作数(即是3与2与1),又+与-是Left to Right的运算顺序,所以要从左算到右,所以算了3+2,才再算-1,
=的优先级最低,所以最后才算i=,又=是Right to Left的运算顺序,所以最后才把=运算符右边的结果赋值给i。
yangch_nhcmo 2009-05-11
  • 打赏
  • 举报
回复

int i = 5;
int a = i++ + ++i + i--; //楼主是说像这样的代码吗?这种的代码其执行顺序是未定义的;
lingyin55 2009-05-11
  • 打赏
  • 举报
回复
运算符的运算首先要看优先级,然后再看结合性,对于只是一个自增或者自减,本来就
没有结合性可言。

[Quote=引用 5 楼 congicong 的回复:]
我不知道什么范例啊,就是看书的时候留的疑问。。。。
[/Quote]
congicong 2009-05-11
  • 打赏
  • 举报
回复
我不知道什么范例啊,就是看书的时候留的疑问。。。。
  • 打赏
  • 举报
回复
没看明白
你举个例子吧。
congicong 2009-05-11
  • 打赏
  • 举报
回复
如果不考虑优先级的情况下呢?
amossavez 2009-05-11
  • 打赏
  • 举报
回复
不是吧!
这个要看优先级!!
morris88 2009-05-11
  • 打赏
  • 举报
回复
什么意思?

69,337

社区成员

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

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