Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

int / float roznice w dzialaniu

Ostatnio zmodyfikowano 2015-06-11 13:54
Autor Wiadomość
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:
C/C++
#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
P-133453
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.
P-133455
« 1 »
  Strona 1 z 1