Mam taki kod:
float a=1;
cin >> a;
if (!cin) cout << "!";
cout << a << endl;
char c = 'k';
cin >> c;
cout << c << endl;
i nie rozumiem jego działanie w przypadku wprowadzenia ciągu znaków bez liczby (float) na początku np.
"aa bb"
Wyświetlony zostaje wykrzyknik, bo nie dało się wczytać float, ale zmienna a ustawiona wcześniej na 1, otrzymuje wartość 0. Dlaczego, jeżeli wczytywanie nie powiodło się? Nie powinna mieć wartości sprzed "cin >> a"?
Druga rzecz, której nie rozumiem to to, że później program ma wczytać znak z podanego wcześniej strumienia, czyli 'a'. Wynikiem jest jednak wyświetlenie '!' (błąd wczytania) oraz 'k'. Wygląda to tak jakby błędne wczytanie float "psuło" ;) mój strumień. Gdzie robię błąd?