Switch case Stmt mit < im case.
-
Interessant
-
keksekekse schrieb:
Radio Eriwan: Im Prinzip ja.
Geht auch:
switch((i < 0) + 2 * (i > 10)) { case 0: /* 0 bis 10 */ break; case 1: /* < 0 */ break; case 2: /* > 10 */ break; }
Da verlässt du dich aber ganz stark drauf, dass eine erfüllte Bedingung 1 zurückgibt
-
AJ schrieb:
Da verlässt du dich aber ganz stark drauf, dass eine erfüllte Bedingung 1 zurückgibt
Außer der nicht gegebenen Lesbarkeit sehe ich da kein Problem
-
Naja, soweit ich mich erinnern kann, heißt es doch:
Eine Bedingung ist erfüllt, wenn der Wert ungleich 0 ist. Der Rückgabewert einer Bedingung ist nicht weiter definiert. (Oder gibts da doch ein Kapitel im Standard?)
-
Das Ergebnis ist schon auf 0 und 1 spezifizert. Kauderwelsch aus dem Standard:
Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false. The result has type int.
Das gilt auch für die anderen "boolschen" Operatoren (! == ....)
-
TactX schrieb:
Das Ergebnis ist schon auf 0 und 1 spezifizert. Kauderwelsch aus dem Standard:
Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false. The result has type int.
Das gilt auch für die anderen "boolschen" Operatoren (! == ....)
Besser als ich dachte... (Endlich mal anständige fachliche Anforderungen :D)
-
Wie sieht's in C99 aus, wo es einen "echten" boolschen Datentyp gibt? Geben die Operatoren dort auch noch int zurück?
Was den Datentyp selbst angeht, heisst es ja recht eindeutig, false evaluiert zu 0 und true zu 1, umgekehrt evaluiert 0 zu false und != 0 zu true.
-
LordJaxom schrieb:
Wie sieht's in C99 aus, wo es einen "echten" boolschen Datentyp gibt? Geben die Operatoren dort auch noch int zurück?
Das war aus C99
-
TactX schrieb:
LordJaxom schrieb:
Wie sieht's in C99 aus, wo es einen "echten" boolschen Datentyp gibt? Geben die Operatoren dort auch noch int zurück?
Das war aus C99
Ups.
Ich hatte wohl gedacht, dass man sich hier bei gleichzeitiger Einführung von bool an C++ anpasst oder so. Der Vollständigkeit halber hier nochmal der entsprechende Passus im ISO 14882:1998
ISO/IEC 14882:1998 schrieb:
The operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) all yield false or true. The type of the result is bool.
-
LordJaxom schrieb:
TactX schrieb:
LordJaxom schrieb:
Wie sieht's in C99 aus, wo es einen "echten" boolschen Datentyp gibt? Geben die Operatoren dort auch noch int zurück?
Das war aus C99
Ups.
Ich hatte wohl gedacht, dass man sich hier bei gleichzeitiger Einführung von bool an C++ anpasst oder so. Der Vollständigkeit halber hier nochmal der entsprechende Passus im ISO 14882:1998
ISO/IEC 14882:1998 schrieb:
The operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) all yield false or true. The type of the result is bool.
printf ("C%s\n", sizeof(1==1)==sizeof(int) ? "" : "++");