這是又一個序列點的問題,而是一個相當簡單的一個:函數調用的順序點?
#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