求值顺序?

boy8765 2003-08-12 06:50:28
对于形如*++-ptr的表达式的求值顺序问题。有这样两种意见。
第一种:先计算*。也就是先把*++-ptr看作*(),对于()里的东西——++-ptr,再看作++(),对于第二个()里的部分——-ptr,再把-ptr看作-(ptr).也就是说,对于表达式*++-ptr,就是以这样的顺序来计算的*(++(-(ptr))).
第二种意见是:由于*、++、-、这三个均是单目运算符,均是右结合性[(所谓右结合性就是参数的运算顺序是从右到左,也就是说,先计算右边的运算符。),你们认为我写的这个概念是否正确?]对于本例而言,就是先算-(ptr),得到一值,设为A。再算++(A),得一值,设为B,然后再计算*B。综上所述,即为*(++(-(ptr))).
请问网友:你们认为何种意见是正确的。或者你们可能认为这两种都是错的,请给出你们的正确答案。谢谢!
...全文
37 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tangyongkang 2003-08-12
  • 打赏
  • 举报
回复
视编译器而定。
楼主还是找个测试程序,自己测测
minghui000 2003-08-12
  • 打赏
  • 举报
回复
vc、bc编译器不同
loyyer 2003-08-12
  • 打赏
  • 举报
回复
同意楼上。这要看你具体的编译器,因为*和++,--的优先级是一致的(最高)。所以这种语句的移植性是差的,尽量少用
weibz0525 2003-08-12
  • 打赏
  • 举报
回复
vc和bc的编译器就不同。

69,382

社区成员

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

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