L'opérateur de virgule
La virgule est fréquemment employée dans C comme un signe de ponctuation simple, pour séparer des déclarations, des arguments de fonction, etc. variables. Dans certaines situations, la virgule agit en tant qu'opérateur.
Vous pouvez former une expression en séparant deux expressions secondaires avec une virgule. Le résultat est comme suit :
- Les deux expressions sont évaluées, avec l'expression gauche étant évaluée d'abord.
- L'expression entière évalue à la valeur de la bonne expression. Par exemple, le rapport suivant assigne la valeur de b à x, puis les incréments a, et puis les incréments b :
x = (a++, b++);
Priorité d'opérateur de C (résumé des opérateurs de C)
Rang et Associativity |
Opérateurs |
1 (laissé à la droite) |
() [] -> . |
2 (droit vers la gauche) |
! ~ ++ -- * (adressage indirect) et (adresser-de) (type)
sizeof + (unaire) - (unaire) |
3 (laissé à la droite) |
* (multiplication)/% |
4 (laissé à la droite) |
+ - |
5 (laissé à la droite) |
<< >> |
6 (laissé à la droite) |
< <= > >= |
7 (laissé à la droite) |
= = != |
8 (laissé à la droite) |
et (au niveau du bit ET) |
9 (laissé à la droite) |
^ |
10 (laissé à la droite) |
| |
11 (laissé à la droite) |
&& |
12 (laissé à la droite) |
|| |
13 (droit vers la gauche) |
?: |
14 (droit vers la gauche) |
= += - = >>= de <<= de |= de ^= de &= du *=/= %= |
15 (laissé à la droite) |
, |
() est l'opérateur de fonction ; [] est l'opérateur de rangée. |
|
Prenons un exemple de l'utilisation des opérateurs :
/* Utilisation des opérateurs */
int main()
{
int x = 0, y = 2, z = 1025;
float a = 0.0, b = 3.14159, c = -37.234;
/* incrémentation */
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 */
/* décrémenter */
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 */
/* arithmétique 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 */
/* expression conditionnelle */
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;
}
et le résultat de ce programme sera affiché sur l'écran comme :
x=3, y=1, z=1
a=2.000000, b=3.141590, c=2.000000 |
|