#define max(a, b) \ a < b ? b : a
Fermé
NA31VA
-
10 juin 2014 à 13:39
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 10 juin 2014 à 21:36
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 10 juin 2014 à 21:36
A voir également:
- #define max(a, b) \ a < b ? b : a
- I14 pro max - Accueil - Guide téléphones
- Le torrent n'est pas en train de se b encoder - Forum Windows 10
- B allemand clavier - Forum Windows
- Connecter ecouteur essentiel b - Forum Casque et écouteurs
2 réponses
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
10 juin 2014 à 14:17
10 juin 2014 à 14:17
Bonjour NA31VA,
En C
Le terme qui suit est un identificateur de macro.
Les termes qui suivent l'identificateur de la macro sont les termes que le pré-processeur met à la place de l'identificateur de macro, avant la phase de compilation.
Lorsque le nom de macro est suivi de parenthèses à la manière d'une fonction avec des arguments, la macro traite ces arguments.
Donc
Note que pour éviter les mauvaises surprises lors des substitutions, il vaut mieux faire usage des parenthèses.
Le standard donne cet exemple :
qui est beaucoup plus sécurisé.
Quand à la construction
Son fonctionnement est notamment expliqué là : http://www.ai.univ-paris8.fr/~jk/C/cours3/node27.html
C'est une sorte de if / then / else en plus compact.
Dal
En C
#defineest une directive destinée au pré-processeur, qui intervient en amont de la phase de compilation.
Le terme qui suit est un identificateur de macro.
Les termes qui suivent l'identificateur de la macro sont les termes que le pré-processeur met à la place de l'identificateur de macro, avant la phase de compilation.
Lorsque le nom de macro est suivi de parenthèses à la manière d'une fonction avec des arguments, la macro traite ces arguments.
Donc
max(a, b)n'est pas une fonction, mais une macro, lorsque le préprocesseur trouve un code de la forme
max(12, 5), il le remplace par
12 < 5 ? 5 : 12.
Note que pour éviter les mauvaises surprises lors des substitutions, il vaut mieux faire usage des parenthèses.
Le standard donne cet exemple :
#define max(a, b) ((a) > (b) ? (a) : (b))
qui est beaucoup plus sécurisé.
Quand à la construction
?:c'est une expression conditionnelle utilisant l'opérateur conditionnel ternaire du C.
Son fonctionnement est notamment expliqué là : http://www.ai.univ-paris8.fr/~jk/C/cours3/node27.html
C'est une sorte de if / then / else en plus compact.
Dal
Kheeps
Messages postés
109
Date d'inscription
mercredi 15 mai 2013
Statut
Membre
Dernière intervention
24 juin 2014
10
10 juin 2014 à 13:45
10 juin 2014 à 13:45
Bonjour,
J'ai fait du C++ en cours y'a un moment et je ne suis pas sur de ce que je vais avancé, mais ca peut être une piste ^^
Le #define semble être une bibliotheque, ce qu'on utilise souvent a chaque début de programme (pas sur)
Ensuite le max (a,b) c'est une fonction qui prend le max (plus grande valeur) de la variable a et de la variable b.
Ensuite le a<b ? a:b, comme toi, le point d'interrogation ca ne me dit rien du tout ^^'
J'ai fait du C++ en cours y'a un moment et je ne suis pas sur de ce que je vais avancé, mais ca peut être une piste ^^
Le #define semble être une bibliotheque, ce qu'on utilise souvent a chaque début de programme (pas sur)
Ensuite le max (a,b) c'est une fonction qui prend le max (plus grande valeur) de la variable a et de la variable b.
Ensuite le a<b ? a:b, comme toi, le point d'interrogation ca ne me dit rien du tout ^^'
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
10 juin 2014 à 21:36
10 juin 2014 à 21:36
Non, #define n'est pas du tout une bibliothèque... Ce n'est même pas une fonction, mais une macro.
Pour le reste, voir la réponse de [Dal] :-)
Pour le reste, voir la réponse de [Dal] :-)