[英]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.