De Exploitant van de Komma
De komma wordt vaak gebruikt in C als eenvoudig leesteken, om veranderlijke verklaringen, functieargumenten, enz. te scheiden. In bepaalde situaties, doet de komma dienst als exploitant.
U kunt een uitdrukking vormen door twee subuitdrukkingen met een komma te scheiden. Het resultaat is als volgt:
- Beide uitdrukkingen worden geëvalueerd, met de linkeruitdrukking die eerst wordt geëvalueerd.
- De volledige uitdrukking evalueert aan de waarde van de juiste uitdrukking.
Bijvoorbeeld, wijst de volgende verklaring de waarde van B aan x, toen toename a, en toen toename B toe:
x = (a++, b++);
C exploitantbelangrijkheid (Samenvatting van de exploitanten van C)
Rang en Associativity |
Exploitanten |
1(linkerzijde aan recht) |
() [] -> . |
2(recht op linkerzijde) |
! ~ ++ -- * (indirection) & (address-of) (type)
sizeof + (unary) - (unary) |
3(linkerzijde aan recht) |
* (multiplication) / % |
4(linkerzijde aan recht) |
+ - |
5(linkerzijde aan recht) |
<< >> |
6(linkerzijde aan recht) |
< <= > >= |
7(linkerzijde aan recht) |
= = != |
8(linkerzijde aan recht) |
& (bitwise AND) |
9(linkerzijde aan recht) |
^ |
10(linkerzijde aan recht) |
| |
11(linkerzijde aan recht) |
&& |
12(linkerzijde aan recht) |
|| |
13(recht op linkerzijde) |
?: |
14(recht op linkerzijde) |
= += -= *= /= %= &= ^= |= <<= >>= |
15(linkerzijde aan recht) |
, |
() is the function operator; [] is the array operator. |
|
Neem een voorbeeld van gebruik van exploitanten:
/* Gebruik van Exploitanten */
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;
}
en het resultaat van dit programma zal op het scherm worden getoond zoals:
x=3, y=1, z=1
a=2.000000, b=3.141590, c=2.000000 |
|