Was ist & = und | =

7

Ich habe einen VC ++ - Code in einer großen Codebasis durchsucht und bin auf folgendes gestoßen:

%Vor%

Gibt es einen Operator wie & amp; = oder | = in C ++? Wofür ist es? Entspricht es nState = nState & ~TOOL_TIPS_VISIBLE ?

    
Nav 04.11.2011, 08:09
quelle

7 Antworten

9

x &= y ist das gleiche wie x = x & y
x |= y ist das gleiche wie x = x | y

    
wallyk 04.11.2011, 08:10
quelle
7

Was nicht erwähnt wurde, ist, dass die beiden Operatoren &= und |= überladen werden können. Daher hängt der Code, den Sie gepostet haben, vom Typ von nState ab (obwohl es ganz klar ein int ist, also trifft dies höchstwahrscheinlich nicht zu). Das Überladen von &= überlädt nicht & , also in diesem Fall

%Vor%

Es hängt auch davon ab, was TOOL_TIPS_VISIBLE ist.

%Vor%

Jetzt wann immer du es tust:

%Vor%

x wird 0 . Auch das ist sehr unwahrscheinlich, aber trotzdem gut zu wissen.

Alle anderen Antworten gelten wahrscheinlich hier, aber das ist eine Überlegung wert.

    
Luchian Grigore 04.11.2011 08:25
quelle
3

Es ist bitweise und oder

Im ersten Fall wird das Flag (Bit) ausgeschaltet

%Vor%

im zweiten Fall ist das Flag eingeschaltet

%Vor%     
Anders K. 04.11.2011 08:11
quelle
2

x &= y bedeutet x = x & y . Also hast du recht.

    
duedl0r 04.11.2011 08:11
quelle
2

Ja. &= ist zu & was += ist zu +

    
Basile Starynkevitch 04.11.2011 08:11
quelle
1
%Vor%

entspricht:

%Vor%

Auf die gleiche Weise,

%Vor%

entspricht:

%Vor%     
Tio Pepe 04.11.2011 08:12
quelle
1

& und | sind ähnlich wie && und || , nur sie funktionieren bitweise. Sie können sich also vorstellen, dass &= und |= ähnlich wie += funktionieren. Das ist x &= y; ==> x = x & y;

    
atoMerz 04.11.2011 08:12
quelle

Tags und Links