|
El operador de la coma
La coma se utiliza con frecuencia en C como un signo de puntuación simple, para separar declaraciones, discusiones de la función, el etc. variables. En ciertas situaciones, la coma actúa como operador.
Puedes formar una expresión separando dos expresiones secundarias con una coma. El resultado es como sigue:
- Ambas expresiones se evalúan, con la expresión izquierda que es evaluada primero.
- The entire expression evaluates to the value of the right expression.
Por ejemplo, la declaración siguiente asigna el valor de b a x, entonces incrementos a, y entonces incrementos b:
x = (a++, b++);
Precedencia de operador de C (resumen de los operadores de C)
Fila y Associativity |
Operadores |
1 (ido a la derecha) |
() [] -> . |
2 (derecho a la izquierda) |
¡! ~ ++ -- * (engaño) y (tratar-de) (tipo)
sizeof + (singular) - (singular) |
3 (ido a la derecha) |
* (multiplicación)/% |
4 (ido a la derecha) |
+ - |
5 (ido a la derecha) |
<< >> |
6 (ido a la derecha) |
< <= > >= |
7 (ido a la derecha) |
= = != |
8 (ido a la derecha) |
y (bitwise Y) |
9 (ido a la derecha) |
^ |
10 (ido a la derecha) |
| |
11 (ido a la derecha) |
&& |
12 (ido a la derecha) |
|| |
13 (derecho a la izquierda) |
?: |
14 (derecho a la izquierda) |
= += - = >>= del <<= del |= del ^= del &= del *=/= %= |
15 (ido a la derecha) |
, |
() es el operador de la función; [] es el operador del arsenal. |
Tomemos un ejemplo del uso de operadores:
/* Uso de operadores */
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;
}
y el resultado de este programa será exhibido en la pantalla como:
x=3, y=1, z=1
a=2.000000, b=3.141590, c=2.000000 |
|
|