Operadores de atribuição Dart

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

CategoriaOperadorSignificado
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:op= ba = a op b
Exemplo prático:a += ba = 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

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *