根据FAQ,i = i++
是C中未定义的行为,因为此语句只有一个序列点(完整表达式),并且在此语句中i
已更改两次(侧i++
和=
的效果,所以它是一种未定义的行为。
问题1是我能正确理解吗?或者我误解为什么i = i++
未定义?
第二个问题是x = i++
是一个有效的表达式吗?
我猜它是有效的,x
的值始终是i
的原始值。因为虽然此语句中只有一个序列点,但x和i都只修改了一次,i++
具有更高的优先级,这意味着它应该是有效的,x++
将始终在赋值,使x等于x的原始值。这是对的吗?
答案 0 :(得分:4)
x
一次,i
修改一次。没有插入序列点的单个变量没有多次写入。