鱼C论坛

 找回密码
 立即注册
查看: 1042|回复: 12

[已解决]序列点与自增运算符的初级问题

[复制链接]
发表于 2020-12-27 19:13:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如图,如何用序列点来解释结果呢
逗号是序列点,c+1 是个完整表达式,这样理解对吗
那++a 和 b++ 又该如何解释呢
最佳答案
2020-12-27 19:33:28
      ++ a 与 a ++ 的区别是,前者先执行 a = a + 1,然后才引用,后者先引用,再执行 a = a + 1
      假设  a = 5 则:
      printf("%d" , ++ a) ;
       等效于
      a = a + 1        ;  // a = 6 
      printf("%d" , a) ;  // 打印数值 6,
       而
      printf("%d" , a ++) ;
       等效于
      printf("%d" , a) ;  // 打印数值 5
      a = a + 1        ;  // a = 6 
QQ截图20201227191016.png

评分

参与人数 1鱼币 +5 收起 理由
weiter + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-27 19:25:28 | 显示全部楼层

回帖奖励 +15 鱼币

++a:第一个+表示1?
b++:第二个+表示1?
以上为个人观点,是否正确有待考证
百度说法:https://zhidao.baidu.com/question/149550117.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-27 19:30:08 | 显示全部楼层
weiter 发表于 2020-12-27 19:25
++a:第一个+表示1?
b++:第二个+表示1?
以上为个人观点,是否正确有待考证

能否用序列点解释下呢

评分

参与人数 1鱼币 +5 收起 理由
weiter + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-12-27 19:30:55 | 显示全部楼层
minamikotori 发表于 2020-12-27 19:30
能否用序列点解释下呢

我没有深入学习……我只学到了数据类型那一块前面一点……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-27 19:32:13 | 显示全部楼层
我……评分用完了剩下五鱼币还不回去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-27 19:32:24 | 显示全部楼层
weiter 发表于 2020-12-27 19:30
我没有深入学习……我只学到了数据类型那一块前面一点……

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
weiter + 5 + 5 来还了,新年快乐呀

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-27 19:32:58 | 显示全部楼层

这学习就很不深入对吧……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-27 19:33:16 | 显示全部楼层
weiter 发表于 2020-12-27 19:32
我……评分用完了剩下五鱼币还不回去

没事 我鱼币不怎么缺

评分

参与人数 1荣誉 +3 收起 理由
weiter + 3 今天最后剩下的评分了……

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-12-27 19:33:28 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +15 鱼币

      ++ a 与 a ++ 的区别是,前者先执行 a = a + 1,然后才引用,后者先引用,再执行 a = a + 1
      假设  a = 5 则:
      printf("%d" , ++ a) ;
       等效于
      a = a + 1        ;  // a = 6 
      printf("%d" , a) ;  // 打印数值 6,
       而
      printf("%d" , a ++) ;
       等效于
      printf("%d" , a) ;  // 打印数值 5
      a = a + 1        ;  // a = 6 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-27 19:36:58 | 显示全部楼层
本帖最后由 minamikotori 于 2020-12-27 19:38 编辑

c语言不是没有定义这样的行为吗,cpp中提到赋值运算符、递增运算符和递减运算
符对运算对象做的改变必须在程序执行下一条语句之前完成。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-27 19:39:02 | 显示全部楼层
jackz007 发表于 2020-12-27 19:33
++ a 与 a ++ 的区别是,前者先执行 a = a + 1,然后才引用,后者先引用,再执行 a = a + 1
       ...


c语言不是没有定义这样的行为吗?,cpp中提到赋值运算符、递增运算符和递减运算
符对运算对象做的改变必须在程序执行下一条语句之前完成   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-27 19:48:48 | 显示全部楼层
minamikotori 发表于 2020-12-27 19:39
c语言不是没有定义这样的行为吗?,cpp中提到赋值运算符、递增运算符和递减运算
符对运算对象做的改变 ...


        你根据什么这么说?自增自减运算是 C 语言与生俱来的东西,从它诞生的那一刻起,就一直都有!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-27 19:55:17 | 显示全部楼层
jackz007 发表于 2020-12-27 19:48
你根据什么这么说?自增自减运算是 C 语言与生俱来的东西,从它诞生的那一刻起,就一直都有!

是有这个运算符,但 C  primer Plus 这本c语言的书籍中提到 c语言未规定他们运算顺序,类似x=(4+y++)+(6+y++)这种
不过还是谢谢你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 06:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表