簡體   English   中英

等價的三元條件運算符?

[英]ternary conditional operator equivalent?

我正在嘗試了解while循環。 我了解了三元運算符工作原理的基礎知識,但是僅在不使用if語句的情況下使用它們,而在while循環中使用了這些代碼。 如果不縮短該陳述,將等於什么?

int runOnce=0;
while(runOnce=runOnce?((token=strtok(NULL," "))!=NULL):((token=strtok(strCopy," "))!=NULL)) {
    ....

我認為這更清楚了。

token = strtok (strCopy," ");
while (token!=NULL)
{
    /* do stuff */
    token = strtok (NULL," ");
}

好吧,讓我們一一討論。 正如您所說的,您了解三元運算符的基礎知識,因此我將直接解決該問題。 這里的代碼:

// notice here I did not include the the assignment(=) operation and the variable before it
runOnce?((token=strtok(NULL," "))!=NULL):((token=strtok(strCopy," "))!=NULL) 

這基本上意味着

if(runOnce)
{
    return ((token=strtok(NULL," "))!=NULL);
}
else
{
    return ((token=strtok(strCopy," "))!=NULL);
}

該返回值將依次保存到相同的變量runOnce中

runOnce = // ternary condition mentioned above 

因此,最后,如果變量runOnce為true,則while循環的條件為true

更新:為了使代碼更易於理解,您可以執行以下操作

int runOnce=0;
while(conditionForWhileLoop(runOnce)) 
{
    // ...
}

int conditionForWhileLoop(int runOnce)
{
    if(runOnce)
    {
        return ((token=strtok(NULL," "))!=NULL);
    }
    else
    {
        return ((token=strtok(strCopy," "))!=NULL);
    }
}

當然,您可以做很多事情,但這只是一個開始

暫無
暫無

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

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