7 Stimmen

wie man in C auf die Gleichwertigkeit mehrerer Variablen prüft

Angenommen, ich möchte nicht nur eine, sondern mehrere Variablen in einer if-Anweisung auf Gleichwertigkeit prüfen:

if(x1==x2==y1==y2){
    printf("Input values shouldn't be equal!");
}

Aber das scheint nicht zu funktionieren. Welcher andere Ansatz kann dies tun?

1 Stimmen

Meinen Sie, dass 1, 1, 1, 1 ungültig ist, aber 1, 1, 1, 2 gültig ist, oder müssen sie alle unterschiedlich sein?

0 Stimmen

1,1,1,1 ist ungültig, aber 1,1,1,2 ist gültig. Nur wenn alle Variablen auf denselben Wert gesetzt sind, ist sie ungültig.

26voto

John Bode Punkte 112486
if (x1 == x2 && x2 == y1 && y1 == y2) { ... }

Das Ergebnis des Ausdrucks a == b wird ein ganzzahliger Wert von entweder 0 oder 1 sein. die == Operator ist links-assoziativ, so dass der Ausdruck a == b == c wird bewertet als (a == b) == c das heißt, das Ergebnis von a == b (0 oder 1) wird mit dem Wert von c verglichen. Im folgenden Code bedeutet dies

if (a == b == c) { ... }

der Ausdruck wird nur dann als wahr ausgewertet, wenn a == b und c == 1 oder a != b und c == 0.

10voto

Sani Singh Huttunen Punkte 22657
if (x1 == x2 && x1 == y1 && x1 == y2)
{
  printf("Input values shouldn't be equal!");
}

9voto

Khaled Alshaya Punkte 90854
if( x1 == x2 && x2 == y1 && y1 == y2 ) { ... }

6voto

rmn Punkte 2338

Wenn es sich um ganze Zahlen handelt, können Sie bitweise Operationen verwenden:

if ((x1 & x2 & x3 & x4) == (x1 | x2 | x3 | x4))
  // all are equal

Es wird als wahr bewertet, wenn sie alle gleich sind.

3voto

pmg Punkte 102904

Hier ist ein anderer Ansatz, bei dem eine Hilfsvariable ( count_equals ), so dass es leicht zu machen ist ( und verstehen ) genau das, was Sie wollen.

int count_equals = 0;
if (x1 == x2) count_equals++;
if (x1 == y1) count_equals++;
if (x1 == y2) count_equals++;
if (x2 == y1) count_equals++;
if (x2 == y2) count_equals++;
if (y1 == y2) count_equals++;

if (count_equals == 0) /* all values are different */;
else if (count_equals == 6) /* all values are equal */;
else /* some values are equal */;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X