小白自学C语言两周,请教各位大佬

2401_82894002 2024-02-01 21:49:54

 

 本人小白,最近在看翁恺老师的C语言网课,想请教大佬上边这三个程序的运行结果为什么不一样,第三个我大概能明白,一二为什么调换了一下位置输出的结果就不一样了,不太懂其中的运算逻辑,真诚请教各位大佬。

 

 

...全文
252 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

我就解释一下第二题的计算过程:
printf("%d,%d\n",++a,a++)中,依次从右向左开始计算
int a=10
①a++,先使用(输出10)再自增1,10+1=11
②++a,a自增1 ,11+1=12
a最终值12
a++在计算过程中输出,++a按最终值输出。所以a++输出10,++a输出12

zara 02-02
  • 打赏
  • 举报
回复 1

第一点,c 调用函数,参数入栈是由右向左进行的,即最后一个参数先被处理进栈;第二,这样的语句,歧义很大,不同的环境结果可能不一样,我用 vc2008 第一二题的结果分别是 11,11 和 11,10 和上面图中的不同,看来,应该是对语句的解释有异,vc2008 是把整个 printf() 最为一个语句,a++ 是在 printf() 之后执行的,而上面图里的,应该是吧每个参数都作为一个语句来理解了,这样的话,非单一的自增/减语句就是炸蛋,不应使用。

  • 举报
回复
@zara 谢谢大佬,大概理解了,刚学认识比较浅显,所以理解起来比较吃力

69,283

社区成员

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

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