Der Komma-Operator
Das Komma wird häufig in C wie ein einfaches Interpunktionszeichen verwendet, um variable Erklärungen, Funktion Argumente, etc. zu trennen. In bestimmten Situationen dient das Komma als ein Operator.
Du kannst einen Ausdruck bilden, indem Sie zwei Vorausdrücke mit einem Komma trennen. Das Resultat ist, wie folgt:
- Beide Ausdrücke werden ausgewertet, wenn der linke Ausdruck zuerst ausgewertet ist.
- Der gesamte Ausdruck wertet zum Wert des rechten Ausdruckes aus. Z.B. weist die folgende Aussage den Wert von b bis x, dann Stufensprünge a und dann Stufensprünge b zu:
x = (a++, b++);
C Operatorenrangfolge (Zusammenfassung der C Operatoren)
Rank und Associativity |
Operatoren |
1(links rechts) |
() [] -> . |
2(recht nach links) |
! ~ ++ -- * (indirection) & (address-of) (type)
sizeof + (unary) - (unary) |
3(links rechts) |
* (multiplication) / % |
4(links rechts) |
+ - |
5(links rechts) |
<< >> |
6(links rechts) |
< <= > >= |
7(links rechts) |
= = != |
8(links rechts) |
& (bitwise AND) |
9(links rechts) |
^ |
10(links rechts) |
| |
11(links rechts) |
&& |
12(links rechts) |
|| |
13(recht nach links) |
?: |
14(recht nach links) |
= += -= *= /= %= &= ^= |= <<= >>= |
15(recht nach links) |
, |
() ist der Funktion Operator; [] ist der Reihe Operator. |
|
Uns ein Beispiel des Gebrauches der Operatoren nehmen lassen:
/*Gebrauch der Operatoren */
int main()
{
int x = 0, y = 2, z = 1025;
float a = 0.0, b = 3.14159, c = -37.234;
/* Erhöhen */
x = x + 1; /* Dieses Stufensprünge x */
x++; /* Dieses Stufensprünge x */
++x; /* Dieses Stufensprünge x */
z = y++; /* z = 2, y = 3 */
z = ++y; /* z = 4, y = 4 */
/* Verringern */
y = y - 1; /* Dieses Verminderung y */
y--; /* Dieses Verminderung y */
--y; /* Dieses Verminderung y */
y = 3;
z = y--; /* z = 3, y = 2 */
z = --y; /* z = 1, y = 1 */
/* Arithmetik OP */
a = a + 12; /* Dieses fügt 12 a hinzu */
a += 12; /* Dieses fügt 12 mehr a hinzu */
a *= 3.2; /* Dieses multipliziert a mit 3.2 */
a -= b; /* Dieses subtrahiert b von a */
a /= 10.0; /* Dieses teilt a bis zum 10.0 */
/* Bedingungsausdruck */
a = (b >= 3.0 ? 2.0 : 10.5 ); /* Dieser Ausdruck */
if (b >= 3.0) /* Und dieser Ausdruck */
a = 2.0; /* identisch sein, beide */
else /* verursacht das selbe */
a = 10.5; /* Resultat. */
c = (a > b ? a : b); /* c hat das Maximum von a oder von b */
c = (a > b ? b : a); /* c hat die Minute a oder b */
printf("x=%d, y=%d, z= %d\n", x, y, z);
printf("a=%f, b=%f, c= %f", a, b, c);
return 0;
}
und das Resultat dieses Programms wird auf dem Schirm wie angezeigt:
x=3, y=1, z=1
a=2.000000, b=3.141590, c=2.000000 |
|