Operadores aritméticos binários básicos
São usados para cálculos entre dois números, existem 7 tipos no total, incluindo as quatro operações fundamentais, divisão inteira, resto da divisão e o operador unário de sinal negativo.
| Operador | Explicação da função |
|---|---|
+ | Adição |
- | Subtração |
-expressão | Sinal negativo unário (inverte o sinal do número) |
* | Multiplicação |
/ | Divisão comum, o resultado sempre é do tipo double (ponto flutuante) |
~/ | Divisão inteira, descarta a parte decimal e retorna int |
% | Módulo (pega o resto da divisão inteira) |
A divisão tem uma característica diferente de outras linguagens: o operador / sempre retorna um número decimal. Se precisar de valor inteiro use ~/, um ponto muito importante para quem já tem experiência com programação.
Exemplo de código:
void main() {
// Teste de adição, subtração, multiplicação, divisão, divisão inteira e módulo
print(2 + 3 == 5);
print(2 - 3 == -1);
print(2 * 3 == 6);
print(5 / 2 == 2.5); // Divisão comum retorna double decimal
print(5 ~/ 2 == 2); // Divisão inteira mantém apenas a parte inteira int
print(5 % 2 == 1); // % retorna apenas o resto da divisão inteira
// Exemplo de concatenação de string com quociente e resto
print('5/2 = ${5 ~/ 2} r ${5 % 2}' == '5/2 = 2 r 1');
}Code language: Dart (dart)
Imagem do resultado da execução

Operadores de incremento / decremento
O Dart suporta duas formas prefixo e posfixo para o incremento ++ e o decremento --. A diferença principal: alterar a variável primeiro ou pegar seu valor original primeiro.
| Operador | Lógica de execução | Valor retornado pela expressão |
|---|---|---|
++var | Somar 1 na variável primeiro, depois usar o novo valor no cálculo | Novo valor após o incremento |
var++ | Usar o valor original da variável no cálculo primeiro, depois somar 1 na variável ao final | Valor original antes do incremento |
--var | Subtrair 1 da variável primeiro, depois usar o novo valor no cálculo | Novo valor após o decremento |
var-- | Usar o valor original da variável no cálculo primeiro, depois subtrair 1 da variável ao final | Valor original antes do decremento |
void main() {
int a;
int b;
// 1. Incremento prefixo ++a: altera primeiro, depois atribui
a = 0;
b = ++a;
print(a == b); // a=1, b=1 → true
// 2. Incremento posfixo a++: atribui valor original primeiro, depois altera
a = 0;
b = a++;
print(a != b); // a=1, b=0 → true
// 3. Decremento prefixo --a: altera primeiro, depois atribui
a = 0;
b = --a;
print(a == b); // a=-1, b=-1 → true
// 4. Decremento posfixo a--: atribui valor original primeiro, depois altera
a = 0;
b = a--;
print(a != b); // a=-1, b=0 → true
}
Code language: PHP (php)
Todos os prints do exemplo retornam true.
Aviso: colocar ++ ou — antes ou depois da variável gera comportamentos diferentes dentro de expressões.
Quando usados isoladamente, exemplo:
int a = 1;
++a;
int b = 1;
b++;
print(a);
print(b);Code language: PHP (php)
O código acima imprime 2 em ambos os casos.
D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
2
2
Code language: CSS (css)
O mesmo vale para o –, a variável sempre será aumentada ou diminuída em uma unidade.
Mas se ++ e — forem parte de uma fórmula matemática, exemplo:
void main() {
int a = 5;
// Posfixo: usa o valor 5 no cálculo primeiro, depois a passa para 6
int res1 = a++ * 2;
print(res1); // 10
print(a); // 6
int b= 5;
// Prefixo: altera b para 6 primeiro, depois faz o cálculo
int res2 = ++b * 2;
print(res2); // 12
print(b); // 6
}Code language: PHP (php)
A e b terminam com valor igual a 6, mas res1 e res2 têm resultados diferentes apenas por causa da posição do ++.
Explicação do posfixo a++: primeiro calcula a*2=10 com a ainda valendo 5, salva esse valor em res1 e depois incrementa a para 6.
No prefixo ++b: primeiro soma 1 em b para ficar 6, depois calcula 6*2=12 que vai para res2.
A linha int res1 = a++ * 2; é equivalente a:
int res1 = a * 2;
a = a +1;
A linha int res2 = ++b * 2; é equivalente a:
b = b+1;
int res2 = b * 2;

Mnemônico para lembrar:
Prefixo altera primeiro, posfixo usa primeiro;
Prefixo retorna o valor novo, posfixo retorna o valor original.
Resumo
Prefixo ++a / --a: altere a variável primeiro, depois use o valor modificado para cálculos ou atribuições
Posfixo a++ / a--: use o valor original da variável para cálculos ou atribuições primeiro, e após finalizar a operação altere a variável
Você pode testar os exemplos abaixo:
void main() {
int a = 0;
int b = ++a;
// Passo 1: a = a + 1 → a=1
// Passo 2: atribui o novo valor de a (1) para b
print(a); // 1
print(b); // 1
}
void main() {
int a = 0;
int b = a++;
// Passo 1: atribui o valor original de a (0) para b
// Passo 2: executa a = a + 1 → a=1
print(a); // 1
print(b); // 0
}
void main() {
int a = 0;
int b = --a;
// Passo 1: a = a - 1 → a=-1
// Passo 2: atribui o novo valor de a (-1) para b
print(a); // -1
print(b); // -1
}
void main() {
int a = 0;
int b = a--;
// Passo 1: atribui o valor original de a (0) para b
// Passo 2: executa a = a - 1 → a=-1
print(a); // -1
print(b); // 0
}
Estes são os exemplos mais simples de incremento e decremento prefixo e posfixo. Compile e execute você mesmo para perceber a diferença.