有关++和--的奇怪现象

richard_ma 2006-09-17 09:06:41
#include <stdio.h>

void main(){

int b, a = 5;
b = ++a*--a;
}

这个输出25

而改成
#include <stdio.h>

void main(){

int b, a = 5;
b = (++)a*(--a);
}

输出还是25
有没有高手解答一下啊,环境是VC++6.0
谢谢
...全文
170 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
al0n9 2006-09-18
  • 打赏
  • 举报
回复
对这种依赖于编译器实现、又没有什么实际的意义的用法,没必要浪费时间去研究
在实际工作中,写这样代码的人,都应该被打PP,打到PP开花为止。
jixingzhong 2006-09-18
  • 打赏
  • 举报
回复
++ --
相当于是 互相抵消了 ...

如果是 b = (++a)*(++a);
这样的话,
环境依赖性就很明显了 ...
jixingzhong 2006-09-18
  • 打赏
  • 举报
回复
对于这样的组合,
结果将和使用的环境相关了 ...

楼主你可以尝试在不同的环境下测试。

++ -- 组合的情况下,
合理的做法是独立这些 ++ --操作。
HappyTree 2006-09-18
  • 打赏
  • 举报
回复
++和--的优先级比*高,加不加括号都是一样的
aminconi 2006-09-18
  • 打赏
  • 举报
回复
优先级有一定的关系,但是不同系统的编译器执行结果会不一样
如果改代码,或许能更清楚点
void main(){
int b, a = 5;
b = (++a)*(++a);
}
飞哥 2006-09-18
  • 打赏
  • 举报
回复
执行了
++a a=6
然后执行的是
--a a= 5
最后做乘法
5*5=25


运算符优先级
richard_ma 2006-09-18
  • 打赏
  • 举报
回复
这不是我问的,是我同学问我,我也知道这样的代码在实际中用不上,属于有歧义的代码,但是我忽视了优先级的问题,谢谢大家提醒,又学了一招,呵呵
赶紧给大家算分,谢谢
richard_ma 2006-09-17
  • 打赏
  • 举报
回复
b = (++)a*(--a);
写错了,是这个
b = (++a)*(--a);

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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