|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
[c++] come funzionano i | per i flag?
in c++ uso i pipe | come descritto da msdn.
Ecco uno pseudo esempio di opzioni per questi flags: Funzione(cod1, &mess, 1, flag.opzione_1 | flag.opzione_2 | | flag.opzione_3) le macro flag.opzione_1 o 2 o 3 come vengono combinate dal compilatore?? qualcuno può spiegarmi come decide il programma sui flags da usare sopra?? in base a cosa il programma decide quale flag usare?? Ultima modifica di okay : 04-06-2006 alle 11:40. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
0 or 0 = 0 0 or 1 = 1 1 or 0 = 1 1 or 1 = 1 Esempio: #define FLAG1 1 #define FLAG2 2 #define FLAG3 4 dire FLAG1 | FLAG3 equivale a dire 5.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
si... giusto lo sò ma la mia domanda era come il programma decidesse quale flag interpretare tra i 3, giusto come esempio. E' chiaro che se escludo il 2 esso non sarà scelto o sceglie 1 o il 3. Volevo sapere come fà a decidere quale scegliere. |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
anzi faccio sorridere anche i miei amici... per certe cose ovvie. Diciamo così: tutti flag che metto nelle pipe il programma li esegue se non li metto non esegue quel flag che io non ho messo. E ancora se metto 2 tipi di flag il programma li esegue tutti e 2 oppure uno solo dei 2 perchè ho per esempio la scheda grafica che supporta quella macro. mi sono risposto da solo |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
![]() ![]() Guarda che non è un pipe, è una OR. E poi i flag non vengono "eseguiti"!!! Ok ... per dissipare qualunque dubbio ---> esempio completo: ![]() Codice:
#define FLAG1 1 #define FLAG2 2 #define FLAG3 4 void funzione (int flags) { if (flags & FLAG1) { /* fai quello che devi fare se FLAG1 è richiesto */ } if (flags & FLAG2) { /* fai quello che devi fare se FLAG2 è richiesto */ } if (flags & FLAG3) { /* fai quello che devi fare se FLAG3 è richiesto */ } } ... funzione (FLAG1 | FLAG3); ...
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
tutto ok andbin
grazie |
![]() |
![]() |
![]() |
#8 | ||
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
![]() Quote:
![]() |
||
![]() |
![]() |
![]() |
#9 | ||
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
![]() Quote:
![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
![]() |
![]() |
![]() |
#10 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
![]() FLAG1 | FLAG2 | FLAG3 | FLAG4 | FLAG5 i flag 2, 3 e 4 stanno letteralmente nelle pipes ^^ vabbè ok, l'1 e il 5 no, ma un po' di fantasia su ![]() ok, so di chiedere troppo ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:00.