Ok, lass uns eins nach dem anderen gehen. Wie Sie gesagt haben, kennen Sie die Grundlagen zum ternären Operator, also werde ich direkt auf das Problem eingehen. Der Code hier:
// notice here I did not include the the assignment(=) operation and the variable before it
runOnce?((token=strtok(NULL," "))!=NULL):((token=strtok(strCopy," "))!=NULL)
was im Grunde bedeutet
if(runOnce)
{
return ((token=strtok(NULL," "))!=NULL);
}
else
{
return ((token=strtok(strCopy," "))!=NULL);
}
Dieser Rückgabewert wiederum speichern auf die gleiche Variable runonce
runOnce = // ternary condition mentioned above
wird also schließlich, wenn die Variable runOnce ist wahr, dann ist die Bedingung für while-Schleife wahr
Aktualisiert: Um den Code verständlicher machen Sie so etwas wie dies
int runOnce=0;
while(conditionForWhileLoop(runOnce))
{
// ...
}
int conditionForWhileLoop(int runOnce)
{
if(runOnce)
{
return ((token=strtok(NULL," "))!=NULL);
}
else
{
return ((token=strtok(strCopy," "))!=NULL);
}
}
Natürlich tun können, gibt es viel Sie als dies tun können, aber es ist ein Anfang
Okay, das klärt es ein wenig auf. Aber wäre ich in der Lage, es mit einer While-Schleife auch so zu schreiben? Anstatt den ternären Operator while loop statement in einem meiner Programme zu verwenden, möchte ich ihn auf eine leichter lesbare Weise implementieren. – FatFockFrank
"Kann ich es auch mit einer While-Schleife schreiben?" - Ich habe diesen Teil nicht verstanden, aber was ich daraus entnehme, ist, dass Sie die Bedingung so schreiben wollen, dass es leichter zu lesen ist, ist das richtig? Versuchen Sie, den ternären Operator zu vermeiden? – sami1592
Ja Entschuldigung über mein Englisch. Yup, ich versuche, die Verwendung eines ternären Operators zu entfernen. – FatFockFrank