Opérateurs et expressions en C et C++
Dans cette leçon, vous allez utiliser les opérateurs arithmétiques, d'affectation, de comparaison et logiques en C et C++, et comprendre la règle de la division entière.
Introduction
Les opérateurs combinent des valeurs pour former des expressions, comme a + b ou a > b. C et C++ ont presque les mêmes opérateurs, y compris la règle de la division entière qui surprend souvent les débutants : quand on divise deux entiers, la partie décimale est perdue.
Points importants
- Activez les avertissements du compilateur (compiler warnings) et corrigez-les tous.
- Comprenez bien le type et la durée de vie (lifetime) de chaque valeur.
- Vérifiez toujours les données d'entrée et les limites des indices de tableau.
Exemples de code C et C++
#include <stdio.h>
int main(void) {
int a = 17, b = 5;
printf("a + b = %d\n", a + b);
printf("a - b = %d\n", a - b);
printf("a * b = %d\n", a * b);
printf("a / b = %d\n", a / b); /* integer division drops the fraction */
printf("a %% b = %d\n", a % b); /* remainder */
printf("a / 5.0 = %.1f\n", a / 5.0); /* one double operand gives a double */
int total = 10;
total += 5;
total *= 2;
printf("total = %d\n", total);
int count = 0;
count++;
printf("count = %d\n", count);
/* Comparisons and logical operators give 1 (true) or 0 (false). */
printf("a > b: %d, a == 17: %d\n", a > b, a == 17);
printf("a > 10 && b > 10: %d\n", a > 10 && b > 10);
printf("a > 10 || b > 10: %d\n", a > 10 || b > 10);
return 0;
}
a + b = 22
a - b = 12
a * b = 85
a / b = 3
a % b = 2
a / 5.0 = 3.4
total = 30
count = 1
a > b: 1, a == 17: 1
a > 10 && b > 10: 0
a > 10 || b > 10: 1
#include <iostream>
int main() {
int a = 17, b = 5;
std::cout << "a + b = " << a + b << '\n';
std::cout << "a - b = " << a - b << '\n';
std::cout << "a * b = " << a * b << '\n';
std::cout << "a / b = " << a / b << '\n'; // integer division drops the fraction
std::cout << "a % b = " << a % b << '\n'; // remainder
std::cout << "a / 5.0 = " << a / 5.0 << '\n'; // one double operand gives a double
int total = 10;
total += 5;
total *= 2;
std::cout << "total = " << total << '\n';
int count = 0;
count++;
std::cout << "count = " << count << '\n';
// bool values print as true/false with std::boolalpha.
std::cout << std::boolalpha;
std::cout << "a > b: " << (a > b) << ", a == 17: " << (a == 17) << '\n';
std::cout << "a > 10 && b > 10: " << (a > 10 && b > 10) << '\n';
std::cout << "a > 10 || b > 10: " << (a > 10 || b > 10) << '\n';
}
a + b = 22
a - b = 12
a * b = 85
a / b = 3
a % b = 2
a / 5.0 = 3.4
total = 30
count = 1
a > b: true, a == 17: true
a > 10 && b > 10: false
a > 10 || b > 10: true
Comparaison entre C et C++
Comme a et b sont tous deux des int, 17 / 5 donne 3 et non 3.4. Pour garder la partie décimale, au moins un des opérandes doit être de type double. L'opérateur % renvoie le reste, soit 2. En C, les comparaisons et les opérateurs logiques && et || renvoient 1 ou 0, en C++ ils renvoient true ou false, et std::boolalpha affiche le résultat sous forme de mot.
C utilise de petites fonctions procédurales et montre ouvertement comment les données sont représentées en mémoire.
C++ permet toujours de travailler à bas niveau, mais ajoute des types de bibliothèque et des abstractions plus sûres.
Exercices d'approfondissement
Exécutez les deux versions, puis modifiez le code pour observer la différence de sécurité qu'apporte chaque langage.
- Testez des entrées invalides et des valeurs limites.
- Compilez avec les options -Wall -Wextra -Wpedantic pour activer davantage d'avertissements.
- Placez les déclarations communes dans un fichier d'en-tête et l'implémentation dans un fichier séparé.
S'entraîner avec un défi
Utilisez le contenu de cette leçon pour résoudre un vrai problème. Chaque défi s'exécute dans le navigateur, avec des tests instantanés et une revue par l'IA.
- Celsius vers Fahrenheit Convertir une température de degrés Celsius en degrés Fahrenheit. Facile
- Simple Interest Find the total amount after simple interest. Facile