logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Programownie C++ - Unia w C++ i przypisanie wartości zmiennym składowym

kopek11111 02 Paź 2012 21:20 1179 5
REKLAMA
  • #1 11370982
    kopek11111
    Poziom 17  
    Posty: 162
    Pomógł: 36
    Ocena: 7
    Unie mogą przechowywać w jednej chwili wartość w jednej składowej, czyli:

    Kod: text
    Zaloguj się, aby zobaczyć kod




    Ten przykład się zgadzał, ale jeśli zamienię w unii deklaracje składowych tzn ich typ czyli int na double i double na int, czyli:


    Kod: text
    Zaloguj się, aby zobaczyć kod




    Może ktoś wytłumaczyć czemu w tym drugim przykładzie czemu "Wojtek.mil" jest wyświetlana prawidłowa liczba a nie przypadkowa. Przecież zmieniłem drugą zmienną składową więc ta inna powinna być wymazana i przypadkowa?
  • REKLAMA
  • #2 11371087
    stanleysts
    Poziom 27  
    Posty: 838
    Pomógł: 115
    Ocena: 2
    Prawidłowa to znaczy jaka?
  • REKLAMA
  • #3 11371112
    kopek11111
    Poziom 17  
    Posty: 162
    Pomógł: 36
    Ocena: 7
    czyli 321, a przecież kompilator powinien wywalić jakoś liczbę losową tzw śmieci...
    Czy się mylę?
  • REKLAMA
  • Pomocny post
    #4 11371672
    krru
    Poziom 33  
    Posty: 1817
    Pomógł: 230
    Ocena: 214
    double jest większe (w sensie sizeof) od int, wiec przypisanie do int zmienia tylko część zmiennej double, być może mało znaczącą.
  • REKLAMA
  • #5 11372278
    stanleysts
    Poziom 27  
    Posty: 838
    Pomógł: 115
    Ocena: 2
    Żadnej losowej ma nie wrzucać, jedyną interesującą rzeczą tutaj jest to, że nie wyświetla 100 tylko 321, które zostało nadpisane. Odpowiedzią jest tu sposób przechowywania typu double w pamięci a typu int. To 321 nie jest nadpisywane, bo znajduje się gdzie indziej niż te dane reprezentyujące 100. Są one właśnie bardzo znikomą częścią double, wydaje mi się, że jak wyświetlisz sobie tą wartość double w większej precyzji to dostaniesz tam jakąś koncówkę mało znaczącą.
  • #6 11400046
    kopek11111
    Poziom 17  
    Posty: 162
    Pomógł: 36
    Ocena: 7
    Ok. Dzięki wszystkim za rady.
REKLAMA