|
O operador da vírgula
A vírgula é usada freqüentemente em C como uma marca de pontuação simples, separar declarações, argumentos da função, etc. variáveis. Em determinadas situações, a vírgula age como um operador.
Você pode dar forma a uma expressão separando duas expressões secundárias com uma vírgula. O resultado é como segue:
- Ambas as expressões são avaliadas, com a expressão esquerda que está sendo avaliada primeiramente.
- A expressão inteira avalía ao valor da expressão direita.
Por exemplo, a seguinte indicação atribui o valor de b a x, então incrementos a, e então incrementos b:
x = (a++, b++);
Precedência de operador de C (sumário de operadores de C)
Rank e Associativity |
Operadores |
1 (saido à direita) |
() [] -> . |
2 (direito à esquerda) |
! ~ ++ -- * (ação indireta) & (dirij-de) (tipo)
sizeof + (unary) - (unary) |
3 (saido à direita) |
* (multiplicação)/% |
4 (saido à direita) |
+ - |
5 (saido à direita) |
<< >> |
6 (saido à direita) |
< <= > >= |
7 (saido à direita) |
= = != |
8 (saido à direita) |
& (bitwise E) |
9 (saido à direita) |
^ |
10 (saido à direita) |
| |
11 (saido à direita) |
&& |
12 (saido à direita) |
|| |
13 (direito à esquerda) |
?: |
14 (direito à esquerda) |
= += - = >>= do <<= do |= do ^= do &= do *=/= %= |
15 (saido à direita) |
, |
() é o operador da função; [] é o operador da disposição. |
|
Deixar-nos fazer exame de um exemplo do uso dos operadores:
/* Uso dos 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;
}
e o resultado deste programa será indicado na tela como:
x=3, y=1, z=1
a=2.000000, b=3.141590, c=2.000000 |
|
|