【发布时间】:2015-05-08 10:28:06
【问题描述】:
在准备 ANSI C 考试期间,我遇到了以下问题 -
以下陈述有效吗?
如果不是,请进行必要的更改以使其有效。
原始语句是:test(i++,i++); 它无效,因为根据 K&R p202 未定义行为
参数的评估顺序未指定
但是我可以将其更改为以下语句吗? test(i+=2, i+=3)?
我没有在 K&R 或任何其他来源看到这样的记录的问题。但是 XCode 编译它并运行没有任何警告。
【问题讨论】:
-
接受的答案不正确。参数中的
,是一个序列点;只有参数评估的顺序是*未指定的。没有未定义的行为。
标签: c language-lawyer c89 sequence-points