三元条件运算符等价?
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," ");
}
我正在尝试理解 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," ");
}