RaVo
RaVo
2
#programowanie #cpp #spoj
http://pl.spoj.com/problems/PP0504D/
Jak to tutaj jest konwertowane? Kompletnie nie wiem skąd te wyniki się biorą, a myślałem, że umiem konwertować liczby.
  • Najlepsze
  • Wszystkie komentarze
Veuch
@RaVo: ale co jest nie tak? :P
Veuch
Veuch
@RaVo: w komentarzach na SPOJu masz link do single-precision na Wiki, poczytaj to może coś się rozjaśni :P
Kaczus2B
Kaczus2B
a co w tym trudnego? urobisz unię jeden element to float, drugi tablica 4 uint8_t i wypisujesz jako hex od końca ta tablicę...
Phallusimpudicus
@RaVo: Z góry zaznaczę, że jestem noobem, ale pamiętam swoje zabawy z konwersjami z decimal to hexagonal. Masz, może ci trochę rozjaśni:

int zmienna = 1234;
cout << "zmienna w dziesiatkowym\t\t" << zmienna << endl;
cout << "zmienna w szesnastkowym\t\t" << hex << zmienna <<
RaVo
RaVo Autor
0
@Veuch: Chyba to, że nie umiem konwertowac rzeczywistych na hex ;d
RaVo
RaVo Autor
0
@Veuch: Właśnie studiuję ;d, musze to najpierw na binarke zamienić? Żeby był format 0000 0000 0000 0000 a potem na hex?
p.....b
@Kaczus2B: tylko to jest undefinied behaviour, tak btw.
Kaczus2B
Kaczus2B
@psychob: Jeśli znasz endian - to nie jest UB! Wielkość floata masz stałą więc gdzie widzisz tam UB? A jeśli nie znasz endiana, kolejność będzie najwyżej inna!
Kaczus2B
Kaczus2B
@psychob: Więc jak z tym UB - gdzie go widzisz?
p.....b
@Kaczus2B: Zapisanie do jednego pola unii a odczytanie z drugiego to jest UB według standardu. Ale to zadziała w GCC (bo oni wspierają to jako rozszerzenie), i w MSVC++ (bo oni mają to gdzieś).
Kaczus2B
Kaczus2B
@psychob: Skąd takie bzdury>? Przeczytał co to jest Unia? Za Stroustrupem: "Unia to struktura, której wszystkie składowe są alokowane pod jednym adresem", chyba, że twierdzisz, że Stroustrup się myli?
p.....b
Skąd takie bzdury

@Kaczus2B: Ze standardu c++, polecam przeczytać zanim będziesz traktować wszystkich z góry.

9.5 Unions [class.union]


In a union, at most one of the non-static data members can be active at any time, that is, the value of at most one of the non-static data members can be stored in a union at any time.
Kaczus2B
Kaczus2B
In a union, at most one of the non-static data members can be active at any time, that is, the value of at most one of the non-static data members can be stored in a union at any time.


@psychob: No i? Czytaj raz jeszcze - tu mamy jedne dane składowane, zaczynają się od tego samego miejsca, jedyne niezdefiniowanie może być kolejność bajtów. Czytaj ze zrozumieniem następnym razem.
Kaczus2B
Kaczus2B
Dodam do powyższego - to co napisales, jest ostrzeżeniem przeciw użyciu unii w ten sposób:

union x
{
int adresjakoint;
char *wskaznik;