int / float roznice w dzialaniu
Ostatnio zmodyfikowano 2015-06-11 13:54
k4boc Temat założony przez niniejszego użytkownika |
int / float roznice w dzialaniu » 2015-06-11 13:08:01 Chciałbym zapytać o różnice w działaniu tych dwóch typów danych. Int dotyczy całkowitych a float zmiennoprzecinkowych jeśli dobrze zrozumiałem, jednak w przykładzie z lekcji 9 używając float wpisana liczba ( niewłaściwie ) zeruje się , natomiast dla int wskazuje losową liczbę ( np. dla wpisanego "dwa" otrzymuje : 2359128 ). W obu przykladach dla niewlasciwych danych wykrywa blad. Wprowadz pierwsza liczbe calkowita: dwa Wprowadz druga liczbe : 2 Wprowadz trzecia liczbe: 3 Otrzymane trzy liczby to: Pierwsza liczba = 2359128 wpisano poprawnie? 0 Druga liczba = 2 Wpisano poprawnie? 1 Trzecia liczba = 3 Wpisano poprawnie? 1
Process returned 0 (0x0) execution time : 4.797 s Press any key to continue.
Program wyglada nastepujaco: #include <iostream> using namespace std; int main() { int pierwsza_liczba; float druga_liczba; float trzecia_liczba; bool jedynka; bool dwojka; bool trojka; cout << "Wprowadz pierwsza liczbe calkowita: "; cin >> pierwsza_liczba; jedynka = cin.good(); cin.clear(); cin.sync(); cout << "Wprowadz druga liczbe : "; cin >> druga_liczba; dwojka = cin.good(); cin.clear(); cin.sync(); cout << "Wprowadz trzecia liczbe: "; cin >> trzecia_liczba; trojka = cin.good(); cin.clear(); cin.sync(); cout << "Otrzymane trzy liczby to:" << endl; cout << "Pierwsza liczba = " << pierwsza_liczba << endl; cout << "wpisano poprawnie? " << jedynka << endl; cout << "Druga liczba = " << druga_liczba << endl; cout << "Wpisano poprawnie? " << dwojka << endl; cout << "Trzecia liczba = " << trzecia_liczba << endl; cout << "Wpisano poprawnie? " << trojka << endl; return 0; } Pozdrawiam |
|
Monika90 |
» 2015-06-11 13:54:47 Pod tym względem nie ma różnicy między int a float. Jeżeli format danych wejściowych jest niepoprawny, to strumień przechodzi w stan fail, a zmienna jest zerowana. Kiedyś (w starej wersji C++) było inaczej i w takiej sytuacji zmienna pozostawała bez zmian, więc wygląda na to, że implementacja standardowej biblioteki, której używasz, jest nie do końca zgodna z obecnie obowiązującym standardem. |
|
« 1 » |