在考試的問題是:誰能解釋和跟蹤這一點,因爲我的老師不能
編寫以下程序的輸出:從控制檯使用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