Tag: 顺序序列点

当p和q指向同一个对象时,“* p = ++(* q)”是否未定义?

在阅读了序列点之后,我了解到i = ++i是未定义的。 那么这段代码怎么样: int i; int *p = &i; int *q = &i; *p = ++(*q); // that should also be undefined right? 假设p和q的初始化取决于某些(复杂)条件。 并且他们可能像上面的情况一样指向同一个对象。 会发生什么? 如果未定义,我们可以使用哪些工具进行检测? 编辑:如果两个指针不应该指向同一个对象,我们可以使用C99限制吗? 这是“严格”的意思吗?