meerdere of of of en voorwaarden in IF-verklaring

Ik heb een basiscontacte twijfel over IF-verklaring.
Laten we zeggen dat ik stringzon wil matchen met een karakterarray (maat 3).

if(arr[0]!='S' || arr[1]!='U' || arr[2]!='N')
cout << "no";
else
cout<< "yes";

zijn alle voorwaarden ingecheckt in een verklaring of retourneert het true op de eerste mismatch?

Als alle voorwaarden worden gecontroleerd, is de volgorde van controle van rechts naar links?


Antwoord 1, Autoriteit 100%

Volgens de C++ -standaard

1 The & AMP; & AMP; Operatorgroepen links-rechts . De operanden zijn beide
contextueel geconverteerd naar bool (clausule 4). Het resultaat is waar als beide
operanden zijn waar en niet waar anders. Unlike & AMP; & AMP; & AMP; garanties
Links-naar rechts evaluatie: De tweede operand wordt niet geëvalueerd als de
Eerste operand is onwaar.

en

1 de || Operatorgroepen links-rechts . De operanden zijn beide
contextueel geconverteerd naar bool (clausule 4). Het retourneert waar of ook
van zijn operanden is waar, en onwaar anders. In tegenstelling tot |, || garanties
Links-naar rechts evaluatie; Bovendien is de tweede operand dat niet
geëvalueerd als de eerste operand evalueert naar true.


Antwoord 2

Het retourneert “TRUE” op de eerste mismatch. Operators in zowel C als C++ “Short-circuit”. Dat wil zeggen, een of operator zal de rechterkant niet evalueren wanneer de linkerkant waar is geretourneerd. De exploitant evalueren de rechterkant niet als de linkerkant false is geretourneerd.


Antwoord 3

De IF-verklaring die u hebt uitgevoerd cout << "no";Als er ten minste een van de voorwaarden is voldaan.

In dit geval, als uw invoer “GUN” is, controleert het programma of:

  • ‘G’ != ‘S’ -> JA
  • ‘U’ != ‘U’ -> NEE
  • ‘N’ != ‘N’ -> NEE

Als aan de eerste voorwaarde is voldaan, zal het programma cout << "no";.

Als het if-statement was:

if(arr[0]!='S' && arr[1]!='U' && arr[2]!='N')
  cout << "no";
else
  cout<< "yes";

Om cout << "no";AAN ALLE voorwaarden moest worden voldaan.

Voor “GUN” zou het zijn als:

  • ‘G’ != ‘S’ -> JA
  • ‘U’ != ‘U’ -> NEE
  • ‘N’ != ‘N’ -> NEE

Aangezien er twee NEE zijn, zou het programma cout<< "yes";.

Dus:

  • || vereist slechts één voorwaarde om te voldoen
  • && vereist dat aan ALLE voorwaarden is voldaan

Other episodes