asy*_*nts 11 c operator-precedence sequence-points language-lawyer c17
在遇到问题" 为什么这些构造使用前后增量未定义的行为? "之后,我决定抓住最新的草案,为我能找到的下一个C标准,并阅读更多相关内容.
在我在C17草案中发现以下段落后不久:
表达式是操作符和操作数的序列,其指定值的计算,或指定对象或函数,或者生成副作用,或执行其组合.在运算符结果的值计算之前对运算符的操作数的值计算进行排序
来源:ISO/IEC 9899:2017,第6.5.1节"表达式"
现在我有点困惑.这i = i++
是不是意味着定义了行为?我这次看了另一个草案,C99:
表达式是操作符和操作数的序列,其指定值的计算,或指定对象或函数,或者生成副作用,或执行其组合.
资料来源:ISO/IEC 9899:1999,第6.5.1节"表达式"
它错过了那句话!