打印问题求高手帮忙

代码如下
1 #include <stdlib.h>
2 #include <stdio.h>
3
4 int main()
5 {
6 pid_t pid;
7 int k=55;
8
9 if(pid=fork()<0)
10 perror("fork error");
11
12 if(pid==0){
13 k++;
14 }
15 //system("ps -al");
16 printf("getpid=%d,pid=%d,kkk=%d\n",getpid(),pid,k);
17 return 0;
18 }
运行后进程号不一样,但变量k都一样被++了
后来吧19行if拍段修改为
9 if((pid=fork())<0)
运行正常,只有pid=0的子进程被++了
查了运算符优先级 貌似没什么关系
我想知道为什么那个判断没加括号后变量k貌似成了共享的变量,或者说子进程的k++为什么再父进程里也运行了
什么原因

作者: songshtao   发布时间: 2011-05-19