求助 !看书看到逗号运算符。为什么表达式t=1,t+5,t++的值是1

做多做少不如做好 2019-08-09 10:54:05
知道t++=5是先令t=5,再使t自增1 还是不能理解表达式的值是递增前的值 就是这样规定的吗
...全文
131 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
636f6c696e 2019-08-10
  • 打赏
  • 举报
回复
是理解错了
引用 5 楼 lin5161678 的回复:
[quote=引用 4 楼 636f6c696e 的回复:] 不太理解,每个逗号是序列点没问题,但最后不应该是t=t++么? 你是说逗号的的最右侧的表达式在赋值前还会有一个序列点?拆成t++;t=t++;?
逗号优先级最低 你大概漏了这句话 你是不是把这个表达式理解为 t=(1,t+5,t++)[/quote]
  • 打赏
  • 举报
回复
题目应该没问题,好像是零几年的计算机二级题
https://zhidao.baidu.com/question/308159318.html
lin5161678 2019-08-10
  • 打赏
  • 举报
回复
引用 4 楼 636f6c696e 的回复:
不太理解,每个逗号是序列点没问题,但最后不应该是t=t++么? 你是说逗号的的最右侧的表达式在赋值前还会有一个序列点?拆成t++;t=t++;?
逗号优先级最低 你大概漏了这句话 你是不是把这个表达式理解为 t=(1,t+5,t++)
636f6c696e 2019-08-10
  • 打赏
  • 举报
回复
不太理解,每个逗号是序列点没问题,但最后不应该是t=t++么? 你是说逗号的的最右侧的表达式在赋值前还会有一个序列点?拆成t++;t=t++;?
引用 3 楼 lin5161678 的回复:
[quote=引用 2 楼 636f6c696e 的回复:] 多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值 t+5压根就不会对t赋值,所以你题目里说的是不正确的 t=1,t+5,t++等同于 t=1; t=t++; 结果是未定义的,参考下面的链接: https://bbs.csdn.net/topics/370153775
没有未定义行为 逗号优先级最低 并且每个逗号都是一个序列点 (t=1), (t+5), t++ 表达式结果是1 t的值是2[/quote]
lin5161678 2019-08-10
  • 打赏
  • 举报
回复
引用 2 楼 636f6c696e 的回复:
多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值 t+5压根就不会对t赋值,所以你题目里说的是不正确的 t=1,t+5,t++等同于 t=1; t=t++; 结果是未定义的,参考下面的链接: https://bbs.csdn.net/topics/370153775
没有未定义行为 逗号优先级最低 并且每个逗号都是一个序列点 (t=1), (t+5), t++ 表达式结果是1 t的值是2
636f6c696e 2019-08-10
  • 打赏
  • 举报
回复
多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值 t+5压根就不会对t赋值,所以你题目里说的是不正确的 t=1,t+5,t++等同于 t=1; t=t++; 结果是未定义的,参考下面的链接: https://bbs.csdn.net/topics/370153775
636f6c696e 2019-08-10
  • 打赏
  • 举报
回复
这种书可以扔了,误人子弟

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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