Aperçu de la syntaxe C
Code de base
#include <stdio.h> int main(int argc, char * argv[]) { ... return 0; }
Variables
#include <stdio.h> // Variable globale, disponible dans toutes les fonctions double PI = 3.14159265358979; double aireCercle(double rayon) { return rayon * rayon * PI; } int main(int argc, char * argv[]) { // Variables locales, uniquement visibles // à l'intérieur de cette fonction double diametre = 16.0; double aire = aireCercle(diametre / 2); printf("Diamètre: %f\n", diametre); printf("Aire: %f\n", aire); return 0; }
Seulement les lettres (a-z), chiffres (0-9) et "_" sont permis. Le compilateur C n'accepte pas d'accents, umlauts, emojis ou autres caractères spéciaux.
Tableaux
#include <stdio.h> void afficheTemperatures(double temperatures[], int longueur) { for (int i = 0; i < longueur; i++) { printf("Jour %d: %0.2f °C\n", i + 1, temperatures[i]); } } int main(int argc, char * argv[]) { // Initialisation directe double humidite[] = {51.0, 48.8, 46.2, 49.2, 49.9}; // Créer le tableau, puis le remplir double temperatures[5]; temperatures[0] = 20.4; temperatures[1] = 21.3; ... temperatures[4] = 23.0; afficheTemperatures(temperatures, 5); return 0; }
Conditions
#include <stdio.h> #include <stdbool.h> int main(int argc, char * argv[]) { // if - else if - else int countryCode = 41; if (countryCode == 41) { printf("Suisse\n"); } else if (countryCode == 33) { printf("France\n"); } else if (countryCode == 49) { printf("Allemagne\n"); } else { printf("Autre pays ...\n"); } // Variable de type bool (inclure stdbool.h) bool quitterImmediatement = false; // Syntaxe abrégé sans accolades pour une seule instruction if (quitterImmediatement) return 0; // Conditions combinées // && signifie "et" // || signifie "ou" // ! signifie "ne ... pas" bool feuVert = true; bool voitures = true; if (feuVert && ! voitures) { printf("On peut traverser la route.\n"); } else { printf("On ne peut pas traverser.\n"); } // Opérateur conditionnel // resultat = condition ? valeurVrai : valeurFaux; int x = ...; char * texte = x > 5 ? "grand" : "petit"; // Equivalent à char * texte; if (x > 5) { texte = "grand"; } else { texte = "petit"; } return 0; }
Boucles
#include <stdio.h> int main(int argc, char * argv[]) { printf("Le programme est lancé!\n"); // Boucle for for (int i = 0; i < 10; i++) { printf("%d\n", i); } // Boucle while int nombre = 72; int compteur = 0; while (nombre % 2 == 0) { nombre /= 2; compteur += 1; } printf("On a divisé %d fois par deux, et on est arrivé à %d.\n", compteur, nombre); return 0; }
Fonctions
#include <stdio.h> double calculePrix(int quantite, double prixUnitaire, double rabaisPourcent) { double rabaisFacteur = 1 - rabaisPourcent / 100; return quantite * prixUnitaire * rabaisFacteur; } void afficheTotal(double prix) { printf("Total: %0.2f\n", prix); } int main(int argc, char * argv[]) { double prix = calculePrix(12, 4.5, 10); afficheTotal(prix); return 0; }
Structures
#include <stdio.h> // Définir une structure struct WGS84Coordinate { double longitude; double latitude; float altitude; }; int main(int argc, char * argv[]) { // Initialiser directement struct WGS84Coordinate matterhorn = {45.97639, 7.65833, 4478}; // Créer et remplir une structure struct WGS84Coordinate matterhorn; matterhorn.longitude = 45.97639; matterhorn.latitude = 7.65833; matterhorn.altitude = 4478; printf("Le Mont Cervin a une altitude de %0.0f m.\n", matterhorn.altitude); return 0; }
Pointeurs
#include <stdio.h> int main(int argc, char * argv[]) { int a = 0; // Pointeur sur a int * b = &a; *b = 5; // ou: b[0] = 5; printf("a vaut maintenant %d.\n", a); return 0; }
Passage par réference
#include <stdio.h> struct GpsPoint { double longitude; double latitude; float altitude; }; void remplirMatterhorn(struct GpsPoint * matterhorn) { matterhorn->longitude = 45.97639; matterhorn->latitude = 7.65833; matterhorn->altitude = 4478; } int main(int argc, char * argv[]) { struct GpsPoint matterhorn; remplirMatterhorn(&matterhorn); printf("Le Mont Cervin a une altitude de %0.0f m.\n", matterhorn.altitude); return 0; }