fork如何与逻辑运算符一起工作

main() { if (fork() || (fork() && fork())) printf("AA\n"); else if (!fork()) printf("BB\n"); else printf("CC\n"); } 

我运行了以下代码并获得AA AA CC BB CC BB的结果。 虽然我理解fork如何工作,但我不明白它对逻辑运算符的作用。 我们class上的老师希望我们为这个作业给出答案。 虽然我可以轻松运行此程序,但我想知道究竟发生了什么。 任何人都可以向网站解释或指导我使用带逻辑运算符的fork时会发生什么。

我对c / c ++很陌生,所以对我很轻松。 谢谢

fork()向子进程返回0 (false),并向父进程返回非零(true)。

您可以将逻辑运算符应用于这些布尔值。

请记住,逻辑运算符会短路,所以0 || fork() 0 || fork()根本不会调用fork

如果仔细阅读代码并考虑每个fork()调用将返回的内容,您应该能够弄明白。