|
L'operatore di virgola
La virgola è usata frequentemente in C come un segno di interpunzione semplice, per separare le dichiarazioni, le discussioni di funzione, ecc. variabili. In determinate situazioni, la virgola funge da operatore.
Potete formare un'espressione separando due espressioni secondarie con una virgola. Il risultato è come segue:
- Entrambe le espressioni sono valutate, con l'espressione di sinistra che è valutata in primo luogo.
- L'intera espressione valuta al valore di giusta espressione.
Per esempio, la seguente dichiarazione assegna il valore della b - la x, allora gli incrementi a ed allora gli incrementi b:
x = (a++, b++);
Precedenza di operatore di C (sommario degli operatori di C)
Rank e Associativity |
Operatori |
1 (lasciato alla destra) |
() [] -> . |
2 (di destra a parte di sinistra) |
! ~ ++ -- * (indirection) & (richiam-di) (tipo)
sizeof + (costituito da un solo elemento) - (costituito da un solo elemento) |
3 (lasciato alla destra) |
* (moltiplicazione)/% |
4 (lasciato alla destra) |
+ - |
5 (lasciato alla destra) |
<< >> |
6 (lasciato alla destra) |
< <= > >= |
7 (lasciato alla destra) |
= = != |
8 (lasciato alla destra) |
& (bitwise E) |
9 (lasciato alla destra) |
^ |
10 (lasciato alla destra) |
| |
11 (lasciato alla destra) |
&& |
12 (lasciato alla destra) |
|| |
13 (di destra a parte di sinistra) |
?: |
14 (di destra a parte di sinistra) |
= += - = >>= del <<= del |= del ^= del &= del *=/= %= |
15 (lasciato alla destra) |
, |
() è l'operatore di funzione; [] è l'operatore di allineamento. |
|
Facciamo un esempio di uso degli operatori:
/* Use Of Operators */
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;
}
ed il risultato di questo programma sarà visualizzato sullo schermo come:
x=3, y=1, z=1
a=2.000000, b=3.141590, c=2.000000 |
|
|