Detalles de bajo nivel de la implementación del operador de asignación C / C ++. ¿Qué devuelve?

Soy un novato total en un mundo de C ++ (y C también). Y no conozco todos sus detalles. Pero una cosa realmente me molesta. Se trata de construcciones como:while (a=b) {...} . Según entiendo, esta magia funciona porque el operador de asignación en C y C ++ devuelve algo. Entonces las preguntas: ¿qué es lo que vuelve? ¿Es esto algo documentado? ¿Funciona igual en C y C ++? ¡Los detalles de bajo nivel sobre el operador de asignación y su implementación en C y C ++ (si hay una diferencia) serán muy apreciados!

Espero que esta pregunta no se cierre, ya que no puedo encontrar una explicación completa y un buen material sobre este tema desde el punto de vista de bajo nivel.

Respuestas a la pregunta(4)

Su respuesta a la pregunta