关于++的使用

尧舜禹V 2014-05-19 07:48:35
int a=2; printf ("\n%d\n %d\n ", a,a++) 为什么输出结果是 3 2??
...全文
267 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-05-27
  • 打赏
  • 举报
回复
rumlee 2014-05-27
  • 打赏
  • 举报
回复
应该在所有的方法参数中拒绝用++运算符。
lin5161678 2014-05-27
  • 打赏
  • 举报
回复
引用 6 楼 u010899705 的回复:
参数是从右向左压栈,a++先用后加,输出2后,a就变成3了
引用 4 楼 oYinGui1 的回复:
参数压栈顺序,a++求值以后先进栈,然后a++执行完了,a变成3了,再入栈。
引用 5 楼 u011025605 的回复:
printf ("\n%d\n %d\n ", a,a++) a++ ->a=2,a++; a->a=3
看置顶帖 了解一下未定义行为的概念 不要自己胡乱猜测什么压栈顺序 这代码的问题和压栈顺序毫无关系
lin5161678 2014-05-27
  • 打赏
  • 举报
回复
引用 7 楼 rumlee 的回复:
应该在所有的方法参数中拒绝用++运算符。
因哽废食 愚不可及
lm_whales 2014-05-27
  • 打赏
  • 举报
回复
引用 7 楼 rumlee 的回复:
应该在所有的方法参数中拒绝用++运算符。
没必要,只有几个参数相关(相同或者一个是另一个的引用等等), 或者函数本身是宏实现的,才需要注意 C库函数,有些根本不是函数,只是一些宏。
逍遥子0426 2014-05-26
  • 打赏
  • 举报
回复
参数是从右向左压栈,a++先用后加,输出2后,a就变成3了
要你命4000 2014-05-26
  • 打赏
  • 举报
回复
printf ("\n%d\n %d\n ", a,a++) a++ ->a=2,a++; a->a=3
Morrisss_ 2014-05-19
  • 打赏
  • 举报
回复
参数压栈顺序,a++求值以后先进栈,然后a++执行完了,a变成3了,再入栈。
yihengwang 2014-05-19
  • 打赏
  • 举报
回复
在printf()函数中尽量少用自增自减运算符,执行顺序没有规律,平台、语言、版本等都有关系
mujiok2003 2014-05-19
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/370153775
知行year 2014-05-19
  • 打赏
  • 举报
回复
仔细看看书哦

33,311

社区成员

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

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