三元条件运算符等价?

ternary conditional operator equivalent?

我正在尝试理解 while 循环。我了解三元运算符如何工作的基础知识,但只在 if 语句中使用过它们,一段时间没有使用 loop.This 一段代码真的让我失望。如果不缩短,与此语句等效的内容是什么?

int runOnce=0;
while(runOnce=runOnce?((token=strtok(NULL," "))!=NULL):((token=strtok(strCopy," "))!=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);
}

这个return值依次保存到同一个变量runOnce

runOnce = // ternary condition mentioned above 

所以,最后如果变量 runOnce 为真,则 while 循环的条件将为真

更新: 为了使代码更易于理解,您可以这样做

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

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

当然你可以做的远不止这些,但这只是一个开始

这个我觉得比较清楚

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