PDA

Visualizza la versione completa : [c++] enum e "|"


stirkland
18-12-2008, 22:03
ciao a tutti!

io ho un problemino con gli enum:
non capisco cosa faccia l'operatore | usato con gli elementi dell'enumerazione.

esempio:


enum MioEnum {
a = 1
b = 2
c = 3
d = a | b | c
};


alla fine d quanto vale?

XWolverineX
18-12-2008, 22:07
Ne sparo una grossa...

Rappresentiamo i bit in binario (solo gli ultimi 8)

a = 1 = 00000001
b = 2 = 00000010
c = 3 = 00000011

Facendo un OR del risultato... d sarà uguale a 3.

stirkland
18-12-2008, 22:19
l'avevo pensato anch'io, ma che senso ha?

MItaly
18-12-2008, 22:23
In questo caso specifico non mi pare che abbia molto senso, ma ci sono diversi casi in cui può essere utile.

XWolverineX
18-12-2008, 22:32
Di solito viene usato nei BitFlags che indicano per ogni bit una data funzionalità...ad esempio..



enum Opzioni
{
SOMMA_NUMERI_PARI = 1;
SOMMA_NUMERI_DISPARI = 1 << 1;
SOMMA_PARI_NEGATIVI = 1 << 2;
SOMMA_DISPARI_NEGATIVI = 1 << 3;
SOMMA_TUTTI = SOMMA_NUMERI_PARI|SOMMA_NUMERI_DISPARI|SOMMA_PARI_ NEGATIVI|SOMMA_DISPARI_NEGATIVI;
}

oregon
18-12-2008, 23:27
In effetti, sarebbe piu' corretto e avrebbe un senso, questo



enum MioEnum {
a = 1,
b = 2,
c = 4,
d = a | b | c
};

Loading