这是又一个序列点的问题,而是一个相当简单的一个:函数调用的顺序点?
#include <stdio.h>
void f(int p, int) {
printf("p: %d\n", p);
}
int g(int* p) {
*p = 42;
return 0;
}
int main() {
int p = 0;
f(p, g(&p));
return 0;
}
这是不确定的行为?或者拨打g(&p)
作为顺序点?
问题还问'g(&p)'是否充当序列点。在评价g(&p)时有两个顺序点:在评价'g'和评价'&p'之间,评价'完整表达式''* p = 42;'和'return'中的'0'。但他们都没有排序评价'g(&p)'的参数'p'的评价。 –
@EricPostpischil:很棒的评论。 :-) – Nawaz