Operadores
Os operadores em C são usados para realizar operações em variáveis e valores.
Operadores aritméticos
Os operadores aritméticos servem para realizar operações aritméticas entre duas variáveis e ou valores.
Operação | Simbolo |
Soma | + |
Subtração | – |
Multiplicação | * |
Divisão real | / |
Módulo | % |
NOTA: o operador módulo (%) dá como resultado o resto da divisão inteira entre os dois operandos.
int n1 = 9 ;
int n2 = 4 ;
int res = n1 + n2 ; //res = 13
int res = n1 – n2 ; //res = 5
int res = n1 * n2; // res = 36
double res = 7.0 / 4.0; // res = 1.750
int res = n1 % n2; //res = 1
Notas :
No caso da divisão, se ambos os operandos forem inteiros é efetuada uma divisão inteira retornando o quociente:
printf("%d\n", 7 / 4); //1
Se um dos operandos fôr um numero de virgula flutuante, é efetuada uma divisão real sendo o resultado um numero de virgula flutuante:
printf("%lf\n", 7.0 / 4); //1.75000
Operadores unários de incrementação e decrementação
Os operadores unários de incrementação/decrementação são operadores com um só operando (geralmente uma variável inteira) e incrementam/decrementam uma unidade ao operando.
Operação | Simbolo |
Incrementa 1 | ++ |
Decrementa 1 | — |
Quando o operador é colocado antes da variável, é chamado de pré-incremento/decremento, e quando é colocado depois da variável, é chamado de pós-incremento/decremento.
No pré-incremento, a variável é incrementada/decrementada e depois usada.
int n1 = 7;
int res = ++n1;
printf("%d-%d\n", res, n1); // 8-8
No pós-incremento a variável é usada e depois incrementada/decrementada.
int n1 = 7;
int res = n1++;
printf("%d-%d\n", res, n1); //7-8
Operadores de atribuição
Os operadores de atribuição servem para atribuir um valor a uma variável.
Operação | Simbolo |
Atribuição simples | = |
Soma e atribuição | += |
Subtração e atribuição | -= |
Multiplicação e atribuição | *= |
Divisão e atribuição | /= |
Módulo e atribuição | %= |
int n1 = 9;
n1 += 3; //12
n1 -= 4; //8
n1 *= 2; //16
n1 /= 4; //4
n1 %= 2; //0
Operadores relacionais
Os operadores relacionais realizam operações de comparação entre dois operandos. O resultado de uma operação relacional é sempre verdadeiro ou falso.
Operação | Simbolo |
Igual | == |
Maior que | > |
Maior ou igual a | >= |
Menor que | < |
Menor ou igual a | <= |
Diferente de | != |
int n1 = 9;
int n2 = 4;
printf("%d\n", n1 == n2); //0 (falso)
printf("%d\n", n1 > n2); //1 (verdadeiro)
printf("%d\n", n1 >= n2); //1 (verdadeiro)
printf("%d\n", n1 < n2); //0 (falso)
printf("%d\n", n1 <= n2); //0 (falso)
printf("%d\n", n1 != n2); //1 (verdadeiro)
NOTA: No exemplo acima, o output das operações é 0 ou 1. Isto é porque o C não possui o tipo de dados booleano e por isso 0 é falso e 1 é verdadeiro.
Operadores lógicos
Os operadores servem para combinar valores booleanos (variáveis, valores ou expressões). O resultado de uma operação lógica é sempre verdadeiro ou falso.
Operação | Simbolo |
E | && |
Ou | || |
Não | ! |
A operação && (e) retorna verdadeiro quando ambos os operandos são verdadeiros e falso no caso contrário, como se +ode ver na tabela abaixo:
Op1 | Op2 | Op1 && Op2 |
V | V | V |
V | F | F |
F | V | F |
F | F | F |
A operação || (ou) retorna verdadeiro quando um dos operandos é verdadeiro e falso no caso contrário:
Op1 | Op2 | Op1 ||Op2 |
V | V | V |
V | F | V |
F | V | V |
F | F | F |
A operação ! (não) só tem um operando e nega este:
Op1 | ! Op1 |
V | F |
F | V |
int n1 = 9;
int n2 = 4;
printf("%d\n", n1 > 4 && n2 < 4); //0 (falso)
printf("%d\n", n1 == n2 || n2 <= n1); //1 (verdadeiro)
printf("%d\n", !(n1 >= n2)); //0 (falso)
Operador de endereço
O operador de endereço é o operador &. Este operador é usado para obter o endereço de memória da uma variável:
int nr1 = 67;
printf(“%d”, &nr1);