#define max(a, b) \ a < b ? b : a
NA31VA
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis débutant en C++, et j'ai vu un début de code commençant par
voilà! Merci beaucoup si vous tenter de m'aider!
Je suis débutant en C++, et j'ai vu un début de code commençant par
#define max(a, b) \Je veux juste savoir à quoi cela peut servir... je ne sais pas ce que
a < b ? b : a
#definesignifie, ni
max(a,b)ou encore
a<b ? b:a(les deux petits points et le point d'interrogation, jamais vu ça avant...).
voilà! Merci beaucoup si vous tenter de m'aider!
A voir également:
- #define max(a, b) \ a < b ? b : a
- B&you - Guide
- Code ascii de b - Guide
- Réinitialiser tv essentiel b - Forum Montage et acquisition vidéo
- B allemand clavier - Forum Clavier
- Attribuer "ß" sur clavier AZERTY ✓ - Forum Clavier
2 réponses
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
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 ^^'