在考试的问题是:谁能解释和跟踪这一点,因为我的老师不能
编写以下程序的输出:从控制台使用Xcode中有包括该
int i = 2 ;
int main() {
int j = 10, p ;
while (i-- && p == fork())
if (p < 0) exit(1);
j += 2;
if (p == 0) {
i *= 3;
j *= 3;
}
else {
i *= 2;
j *= 2;
}
printf("i = %d, j = %d \n",i,j);
return 0;
}
输出行之前int i = 2;
:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
输出:
i = 3, j = 36
i = 0, j = 36
i = -3, j = 36
注:我注意到,如果我们使用Ubuntu,输出是不同的。
我认为这是Ubuntu的输出:
i = 2 , j = 24
i = 2 , j = 24
任何简要解释或跟踪将是巨大的感谢
我希望老师能够抓住这样的问题。我猜p = fork()是什么意思,但这是复合语句的危险。 – 2010-11-29 15:32:06
是的,它是p = fork()但是编译器给出了一个错误(在你应该写的时候比较东西没有赋值) – 2010-11-29 15:35:08