¿Por qué cin dividirá un valor flotante en dos partes?

Tengo un problema con el cin.

int main(void)
{
    int a;
    float b;
    cin >> a >> b;
}

Cuando doy un número flotante (como 3.14) como entrada, ningunoa nib obtenga el valor completo (3.14): la salida es a = 3, b = 0.14.

Yo sé esocin dividirá la entrada por espacio, tabulador o Retorno, pero 'punto' no lo hará, ¿verdad?

¿Y por qué funcionará el siguiente código?

int main(void)
{
    int i=0;
    int k=0;
    float j=0;

    cin >> i >> k >> j;    // i =3, j=k=0
}

Y un problema más, ¿qué beneficio hará el compilador por nosotros?

¡Gracias!

Respuestas a la pregunta(4)

Su respuesta a la pregunta