これは最初のaの入力には入力された文字が代入されるが、このときストリーム上に改行コードが残されてしまい、次のbにはaを入力する際に押下されたリターンキーの改行コードが代入されるためである。