1. Operador de atribuição básico =
Armazena o valor da expressão da direita na variável da esquerda, sobrescrevendo o valor antigo.
Sintaxe:
variável = valor ou expressão;
int age;
age = 10; // Atribui 10 à variável age
String name;
name= "sam"; // Atribuição de textoCode language: JavaScript (javascript)
2. Operador de atribuição sensível a null ??=
Só executa a atribuição se a variável da esquerda tiver valor null. Se a variável não for null, mantém seu valor original.
Sintaxe:
variável ??= valor;
Equivale ao código:
if (variável == null) {
variável = valor;
}Code language: JavaScript (javascript)
Exemplo:
void main() {
int? total = null;
total ??= 5;
print(total); // Exibe 5, atribuição funciona pois total é null
int? count = 100;
count ??= 200;
print(count); // Exibe 100, sem alteração por não ser null
}Code language: PHP (php)
3. Operadores de atribuição compostos
Executam uma operação matemática e a atribuição em um único comando
Para qualquer operador op
a op= b tem o mesmo significado que a = a op b
| Categoria | Operador | Significado |
|---|---|---|
| Aritmética básica | += | Somar e atribuir |
-= | Subtrair e atribuir | |
*= | Multiplicar e atribuir | |
/= | Divisão de ponto flutuante e atribuir | |
| Divisão inteira | ~/= | Divisão inteira e atribuir (apenas quociente inteiro) |
| Resto da divisão | %= | Módulo e atribuir |
| Deslocamento binário à esquerda | <<= | Deslocar à esquerda e atribuir |
| Deslocamento binário à direita | >>= | Deslocar à direita e atribuir |
| Deslocamento à direita sem sinal | >>>= | Deslocamento sem sinal à direita e atribuir |
| E bit a bit | &= | E binário e atribuir |
| XOR bit a bit | ^= | XOR binário e atribuir |
| OU bit a bit | |= | OU binário e atribuir |
| Regra geral dos operadores: | a op= b | a = a op b |
| Exemplo prático: | a += b | a = a + b |
Código de demonstração:
void main() {
var num = 2;
// *= Atribuição composta de multiplicação
num *= 3;
print(num); // 6, equivalente a num = num * 3
// += Adição
num += 4;
print(num); // 10, equivalente a num = num + 4
// -= Subtração
num -= 2;
print(num); // 8
// /= Divisão de ponto flutuante
double d = 10;
d /= 2;
print(d); // 5.0
// ~/= Divisão inteira
int n = 7;
n ~/= 2;
print(n); // 3
// %= Módulo
int m = 9;
m %= 2;
print(m); // 1
// <<= Deslocamento à esquerda
int bit1 = 1;
bit1 <<= 2; // 1 << 2 = 4
print(bit1); // 4
// >>= Deslocamento à direita
int bit2 = 8;
bit2 >>= 2; // 8 >> 2 = 2
print(bit2); // 2
// >>>= Deslocamento à direita sem sinal
int bit3 = -8;
bit3 >>>= 2;
print(bit3); //4611686018427387902, número extremamente grande
// &= E binário
int x = 6; // 110
x &= 3; // 011
print(x); // 010 = 2
// ^= XOR binário
int y = 5;
y ^= 3;
print(y);
// |= OU binário
int z = 4;
z |= 1;
print(z); // 5
}Code language: PHP (php)
Sobre deslocamento de bits: int bit1 = 1; deslocamos 2 posições para a esquerda,
Representação binária de 32 bits do número decimal 1:
00000000 00000000 00000000 00000001
x << n: Move todos os bits binários de x n posições para a esquerda, completa os espaços vazios da direita com 0 e descarta os bits que ultrapassam à esquerda.
No exemplo acima, o resultado fica:
00000000 00000000 00000000 00000100
Esse valor binário corresponde ao número decimal 4
Vamos estudar os operadores lógicos depois. Por enquanto, basta dominar os operadores de atribuição; esse é o conteúdo principal desta aula.
void main() {
// 1. Atribuição básica =
var a = 2;
print(a == 2);
// 2. Multiplicação composta *=
a *= 3; // a = a * 3;
print(a == 6);
// 3. Adição composta +=
a += 4; // a = a + 4;
print(a == 10);
// 4. Atribuição sensível a null ??=
int? b; // Valor padrão null
b ??= 20;
print(b == 20);
b ??= 99; // b não é null, sem alteração
print(b == 20);
// 5. Subtração -=
a -= 5;
print(a == 5);
// 6. Módulo %=
a %= 3;
print(a == 2);
}Code language: Dart (dart)
Todos os valores impressos são true