2011-03-02 30 views
7

He línea de código siguiente:¿Qué significa^= en c/C++?

contents[pos++] ^= key[shift++]; 

¿Qué significa operador ^=?

+11

* suspiro * Antes de la Internet, tenía un libro muy gastado en mi escritorio llamada "El lenguaje de programación C". La respuesta a preguntas como esta siempre estuvo en ese libro. –

+0

@Greg y ahora está en tu Kindle? – corsiKa

+4

@Greg Hewgill: Querida generación más joven: Su generación apesta. Atentamente, cada generación desde el comienzo de los tiempos. :) – James

Respuesta

17

Es el operador de asignación XOR. Básicamente:

x ^= y; 

es lo mismo que:

x = x^y; 
+0

Esto, por supuesto, asume que el operador '^ =' no se ha sobrecargado a quién sabe qué. :-) – corsiKa

+0

También debe señalar que no es solo parte del lenguaje C [++] sino que está presente en muchos idiomas. – RobertPitt

9

Esto significa preforma una XOR operation en contents[pos++] usando key[shift++] y establece contents[pos++] igual al resultado.

Ejemplo:

contents[pos++]  00010101 
key[shift++]  10010001 
        -------- 
        10000100