簡體   English   中英

如何使用&&和||評估這些fork()調用C中的運營商?

[英]How do I evaluate these fork() calls with the && and || operators in C?

我在C下面有一些使用fork()系統調用的代碼,但我只是感到困惑:我該怎么做
解決它的作用:

int main()
{
    fork();
    fork() || fork() && fork();
    fork();
    printf("ämit");
}

fork() && fork() || fork(); 評估如下所示:

       fork()
      /      \
    0/        \>0
 || fork()     && fork()
     /\            /   \
    /  \         0/     \>0
   *    *     || fork()  *
                /   \
               *     *

我需要fork() || fork() && fork()同一種樹 fork() || fork() && fork() 任何人都可以告訴我應該如何實現它?

如果這是一個面試問題(可能)或作業(可能性略低),你先冷靜地解釋你如何進行評估。

我的意思是,你說第一,第二和第五個叉子是無條件的,但第三個和第四個叉子取決於第二個和第三個(並且這些第二個和第三個將在多個過程中發生)。

將表明您理解這些概念。

然后你解釋它並不重要,因為如果有任何編碼器實際上交給你這樣的代碼,就會有一些嚴重的tar'n'feather動作正在進行中。 像這種怪物的代碼在現實世界中沒有地位,雖然它有助於測試你的理解,但你永遠不會在現實中遇到它。

|| 優先級低於&& ,並且這些運算符在評估第一個操作數后如果包含足夠的數據則短路(如果第一個操作數為真,則為||如果第一個操作數為假,則為&&短路)。

fork()||fork()&&fork()等效於fork() || ( fork() && fork() ) fork() || ( fork() && fork() )

因此:

                                                       fork()
                                                     0/     \>0
                                                     /       *  ==> || short-circuits, no evaluation of  fork()&&fork()
                                                   fork()
                                                   0/    \>0
 && short-circuits, no evaluation of &&fork() ==>  *     fork()
                                                         /   \
                                                        *     *

對於你的第一個例子,它等同於( fork() && fork() ) || fork() ( fork() && fork() ) || fork()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM