|
Ο χειριστής κομμάτων
Το κόμμα χρησιμοποιείται συχνά στο γ ως απλό σημείο στίξης, για να χωρίσει τις μεταβλητές δηλώσεις, τα επιχειρήματα λειτουργίας, κ.λπ.... Σε ορισμένες καταστάσεις, το κόμμα ενεργεί ως χειριστής.
Μπορείτε να διαμορφώσετε μια έκφραση με το χωρισμό δύο υπο- εκφράσεων με ένα κόμμα. Το αποτέλεσμα είναι το ακόλουθο:
- Και οι δύο εκφράσεις αξιολογούνται, με την αριστερή έκφραση που αξιολογείται πρώτα.
- Η ολόκληρη έκφραση αξιολογεί στην αξία της σωστής έκφρασης.
Παραδείγματος χάριν, η ακόλουθη δήλωση ορίζει την αξία του β στο Χ, έπειτα αυξήσεις α, και έπειτα αυξήσεις β:
x = (a++, b++);
Προτεραιότητα χειριστών γ (περίληψη των χειριστών γ)
Τάξη και Associativity |
Χειριστές |
1(left to right) |
() [] -> . |
2(right to left) |
! ~ ++ -- * (indirection) & (address-of) (type)
sizeof + (unary) - (unary) |
3(left to right) |
* (multiplication) / % |
4(left to right) |
+ - |
5(left to right) |
<< >> |
6(left to right) |
< <= > >= |
7(left to right) |
= = != |
8(left to right) |
& (bitwise AND) |
9(left to right) |
^ |
10(left to right) |
| |
11(left to right) |
&& |
12(left to right) |
|| |
13(right to left) |
?: |
14(right to left) |
= += -= *= /= %= &= ^= |= <<= >>= |
15(left to right) |
, |
() is the function operator; [] is the array operator. |
|
Πάρτε ένα παράδειγμα της χρήσης των χειριστών:
/* Χρήση των χειριστών */
int main()
{
int x = 0, y = 2, z = 1025;
float a = 0.0, b = 3.14159, c = -37.234;
/* incrementing */
x = x + 1; /* This increments x */
x++; /* This increments x */
++x; /* This increments x */
z = y++; /* z = 2, y = 3 */
z = ++y; /* z = 4, y = 4 */
/* decrementing */
y = y - 1; /* This decrements y */
y--; /* This decrements y */
--y; /* This decrements y */
y = 3;
z = y--; /* z = 3, y = 2 */
z = --y; /* z = 1, y = 1 */
/* arithmetic op */
a = a + 12; /* This adds 12 to a */
a += 12; /* This adds 12 more to a */
a *= 3.2; /* This multiplies a by 3.2 */
a -= b; /* This subtracts b from a */
a /= 10.0; /* This divides a by 10.0 */
/* conditional expression */
a = (b >= 3.0 ? 2.0 : 10.5 ); /* This expression */
if (b >= 3.0) /* And this expression */
a = 2.0; /* are identical, both */
else /* will cause the same */
a = 10.5; /* result. */
c = (a > b ? a : b); /* c will have the max of a or b */
c = (a > b ? b : a); /* c will have the min of a or b */
printf("x=%d, y=%d, z= %d\n", x, y, z);
printf("a=%f, b=%f, c= %f", a, b, c);
return 0;
}
και το αποτέλεσμα αυτού του προγράμματος θα επιδειχθεί στην οθόνη όπως:
x=3, y=1, z=1
a=2.000000, b=3.141590, c=2.000000 |
|
|