关于运算符

OpenOffice_org 2005-04-04 10:17:46
我看到C的书里讲一元运算符++优先于二元运算符,

那为什么还有这样的情况?

A=10 B=5

C=A*B++ 50 B=6
C=A*++B 60

请指教,谢谢
...全文
64 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
OpenOffice_org 2005-04-04
  • 打赏
  • 举报
回复
不对呀?
int i=0;
int a=i++ //这个式子应和 int a=++i 是一样的吧?没有区别!
a 应该是被赋值1对吗? 大侠们?
du51 2005-04-04
  • 打赏
  • 举报
回复
我晕.楼上的.
int i=0;
int a=i++;
++运算优先级肯定比=高吧
你输出一下,看看.这和优先级没有关系.式子运行完,才进行++
OpenOffice_org 2005-04-04
  • 打赏
  • 举报
回复
当然懂啦,
结果都是11啥,

是c = a × b++
×的左边是a,右边是b++,b++的值是b,一个临时值,然后传给表达式,然后才是b++
我的理解是:即然++优先于*, 那么无论是++b还是b++,都应是先++再乘呀,
这样才不至于和优先的定义矛盾呀?

zhongjun33 2005-04-04
  • 打赏
  • 举报
回复
b++是在表达式运行后 b+1
++b是在表达式运行前 b+1
pcboyxhy 2005-04-04
  • 打赏
  • 举报
回复
无语了

++和--的定义看过没

int i=10;
int j=0;
j=i++ 和 j=++i 这个搞懂没有
kobefly 2005-04-04
  • 打赏
  • 举报
回复
不是的
C=A*B++
这个表达式

是c = a × b++
×的左边是a,右边是b++,b++的值是b,一个临时值,然后传给表达式,然后才是b++
OpenOffice_org 2005-04-04
  • 打赏
  • 举报
回复
你好,我知道是这个样子的,
但是为什么会这样呢?
++不是优先于*吗? 这样无论它在哪个位置都应是一样的结果呀?

kobefly 2005-04-04
  • 打赏
  • 举报
回复
C=A*B++

c = a*b;
b++;

C=A*++B

c = a * (++b);

69,372

社区成员

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

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