【发布时间】:2020-07-07 09:43:29
【问题描述】:
我正在尝试了解该程序的输出。但我不明白。我读到了 fork 以及它是如何工作的,我试图理解它,但是当我将它与 && 或 || 混合使用时操作员我不明白为什么输出不同。 有时我得到一个词,有时是 2、3、4...
#include<unistd.h>
#include<stdio.h>
int main (int argc, char *argv[]) {
(fork()&&fork()) || fork();
printf("Test\n");
return 0;
}
知道它是如何工作的吗?
【问题讨论】:
-
任何一本像样的书都应该教你关于逻辑运算符的short-circuit evaluation。他们还应该告诉你零被认为是“假”,任何非零都是“真”。
fork手册页会告诉您它返回零或非零值。现在使用这些知识。 -
只要不要写这种奇怪的、人工的代码就不会出现问题。在同一个表达式中将
fork与一堆其他运算符混合的任何人都会感到困惑。如果你这样做是为了学习,那么唯一的教训就是“不要编写非常奇怪的代码”。 -
另请注意,这个确切的练习和问题显然很常见,如果您花一些时间在您最喜欢的搜索引擎上,您应该能够找到很多信息。
-
请不要忘记接受您认为最有帮助的一个(并投票赞成)答案。
-
谢谢你们的帮助!!