Récemment, j'ai rencontré plusieurs exemples de "drapeaux" en C et C++, et je ne comprends pas très bien comment ils fonctionnent. Après avoir regardé un code source, j'ai remarqué que, souvent, les valeurs de drapeau sont définies en hexadécimal telles que les suivantes:Comment les drapeaux fonctionnent-ils en C?
FLAG1 = 0x00000001,
FLAG2 = 0x00000010,
Mon intuition suggère que ces valeurs sont combinées. Est-ce que les drapeaux fonctionnent en combinant toutes les valeurs de drapeaux dans un int? Si j'avais utilisé les deux comme FLAG1 | FLAG2
, le résultat serait-il 0x00000011
?
Ai-je besoin de créer énumérations avec des décalages de bits ou puis-je utiliser des entiers croissant comme:
FLAG1 = 1;
FLAG2 = 2;
Merci, c'est très simple, vous gagnez. –
* vous gagnez * - Vraiment? Si une bonne réponse est affichée, je dirais que ** tout le monde ** gagne. Et j'espère vraiment que FIRST, SECOND, etc. ne sont que de mauvais exemples et ne suggèrent pas de les déclarer une seule fois et de les réutiliser. 'x = SECOND | FOURTH' n'est pas aussi lisible que 'x = TEXTUREFLAGS_POINTSAMPLE | TEXTUREFLAGS_TRILINEAR'. –
"Vous gagnez" comme dans "merci" "bonne réponse," j'accepte le vôtre. "Je pense que la dénomination était implicite –