Opérateurs d’affectation Dart

1. Opérateur d’affectation de base =

Stocke la valeur de l’expression à droite dans la variable à gauche, en écrasant l’ancienne valeur.

Syntaxe :

variable = valeur ou expression;
int age;
age = 10;        // Affecte 10 à la variable age
String name;
name= "sam"; // Affectation de chaîne de caractèresLangage du code : JavaScript (javascript)

2. Opérateur d’affectation sensible à null ??=

N’exécute l’affectation uniquement si la variable de gauche vaut null. Si la variable n’est pas null, sa valeur reste inchangée.

Syntaxe :

variable ??= valeur;

Équivaut à :

if (variable == null) {
  variable = valeur;
}Langage du code : JavaScript (javascript)

Exemple :

void main() {
	int? total = null;
	total ??= 5;
	print(total); // Affiche 5, l'affectation fonctionne car total vaut null

	int? count = 100;
	count ??= 200;
	print(count); // Affiche 100, l'affectation n'a pas lieu car count n'est pas null
}Langage du code : PHP (php)

3. Opérateurs d’affectation composés

Réalisent une opération puis une affectation en une seule étape

Pour tout opérateur op

a op= b est équivalent à a = a op b

CatégorieOpérateurSignification
Opérations arithmétiques basiques+=Ajout puis affectation
-=Soustraction puis affectation
*=Multiplication puis affectation
/=Division (virgule flottante) puis affectation
Division entière~/=Division entière puis affectation (conserve l’entier)
Reste de division%=Calcul du modulo puis affectation
Décalage binaire gauche<<=Décalage à gauche puis affectation
Décalage binaire droit>>=Décalage à droite puis affectation
Décalage droit sans signe>>>=Décalage droit non signé puis affectation
ET bit à bit&=ET binaire puis affectation
XOR bit à bit^=XOR binaire puis affectation
OU bit à bit|=OU binaire puis affectation
Fonctionnement des opérateurs :op= ba = a op b
Exemple concret :a += ba = a + b

Exemple de code :

void main() {
	var num = 2;

	// *= Affectation composée de multiplication
	num *= 3; 
	print(num); // 6, équivaut à num = num * 3

	// += Addition
	num += 4;
	print(num); // 10, équivaut à num = num + 4

	// -= Soustraction
	num -= 2;
	print(num); // 8

	// /= Division à virgule flottante
	double d = 10;
	d /= 2;
	print(d); // 5.0

	// ~/= Division entière
	int n = 7;
	n ~/= 2;
	print(n); // 3

	// %= Modulo
	int m = 9;
	m %= 2;
	print(m); // 1

	// <<= Décalage gauche
	int bit1 = 1;
	bit1 <<= 2; // 1 << 2 = 4
	print(bit1); // 4

	// >>= Décalage droit
	int bit2 = 8;
	bit2 >>= 2; // 8 >> 2 = 2
	print(bit2); // 2

	// >>>= Décalage droit sans signe
	int bit3 = -8;
	bit3 >>>= 2;
	print(bit3); //4611686018427387902, un nombre très grand 

	// &= ET binaire
	int x = 6; // 110
	x &= 3;    // 011
	print(x);  // 010 = 2

	// ^= XOR binaire
	int y = 5;
	y ^= 3;
	print(y);

	// |= OU binaire
	int z = 4;
	z |= 1;
	print(z); // 5
}Langage du code : PHP (php)

Concernant les décalages binaires : int bit1 = 1 ; on décale de 2 bits vers la gauche,

Représentation binaire 32 bits du nombre décimal 1 :

00000000 00000000 00000000 00000001

x << n : déplace l’ensemble des bits binaires de x de n positions vers la gauche, complète les bits vides à droite par des 0 et supprime les bits qui dépassent à gauche.

Dans l’exemple ci-dessus, on obtient :

00000000 00000000 00000000 00000100

Cette valeur binaire correspond au nombre décimal 4

Nous aborderons les opérateurs logiques plus tard. Pour l’instant, retenez simplement les opérateurs d’affectation : c’est le point essentiel de cette leçon.

void main() {
  // 1. Affectation de base =
  var a = 2;
  print(a == 2);

  // 2. Affectation composée de multiplication *=
  a *= 3; // a =  a * 3;
  print(a == 6);

  // 3. Affectation composée d'addition +=
  a += 4; // a = a + 4;
  print(a == 10);

  // 4. Affectation sensible à null ??=
  int? b; // Valeur initiale null
  b ??= 20;
  print(b == 20);

  b ??= 99; // b n'est pas null, aucune modification
  print(b == 20);

  // 5. Soustraction -=
  a -= 5;
  print(a == 5);

  // 6. Modulo %=
  a %= 3;
  print(a == 2);
}Langage du code : Dart (dart)

Tous les affichages valent true

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *