¿Podría alguien explicar qué hace esto y cómo es el código C legal? He encontrado esta línea en este código: http://code.google.com/p/compression-code/downloads/list, que es una implementación en C del algoritmo Vitter para Adaptive Huffman Coding¿Dos signos iguales en una línea?
ArcChar = ArcBit = 0;
De la función:
void arc_put1 (unsigned bit)
{
ArcChar <<= 1;
if(bit)
ArcChar |= 1;
if(++ArcBit < 8)
return;
putc (ArcChar, Out);
ArcChar = ArcBit = 0;
}
ArcChar es un int
y Arcbit es un unsigned char
Gracias para explicar el tema de tipo de datos. – user807566
No es lo mismo que la versión de dos instrucciones, que tiene un punto de secuencia entre las dos asignaciones. Esto puede marcar la diferencia si los dos lvalues son '* ptr1' y' * ptr2' y apuntan al mismo lugar (en el que la versión de declaración única tendría UB) o si ambos son 'volátiles' y te importa el orden en que se realizan las asignaciones. –
Ah, maldición. Y ahora no puedo borrar: -/ – Joey