K.....2
K.....2
#informatyka #programowanie #cpp

Mircy informatycy-szybkie pytanie.
Jeżeli do zmiennej typu double wprowadzimy złą wartość np literę 'c' to co zostaje zapisane do tej zmiennej i czy jest możliwość wyciągnięcia jej zawartości np do stringa/chara?
Program zabezpieczyłem przed wysypywaniem ale zależy mi na pobraniu tej literki.

Wiem, że brzmi dziwnie ale dokładnie na takim rozwiązaniu mi zależy.
  • Najlepsze
  • Wszystkie komentarze
edgar_k
edgar_k
@Kebab92: jak wprowadzimy, to jest pytanie.
Jak zrobisz cos w stylu double d = 'c' to o ile sie skompiluje to rzutuje char na double, czyli wstawi jego wartosc w incie
fhrh
fhrh
fhrh
0
@Kebab92 O rzutowaniu słyszałeś?
K.....2
K.....2
@edgar_k:
@fhrh:

Dzięki za odpowiedzi. Moglibyście to przybliżyć trochę, podać jakiś prosty przykład?
rfree
@Kebab92: napisz sobie program i zobacz co wyjdzie. Tablicą kodów ascii masz na wikipedii. Kompilator masz nawet online pod ręką.
ktose
@rfree: Ale różne kompilatory mogą sie różnie zachować, na to też trzeba uważać.
edgar_k
edgar_k
@ktose: a przypadkiem rzutowanie nie jest scisle opisane w standardzie?
rfree
@ktose: przykład z ascii wyjdzie tam samo, ten int się zapisze.

A zapisa na siłę przez reinterpret cast (czy tam przez rzutowanie wskaźnika do tego obszaru pamięci) to faktycznie szczegóły być może mogą zależeć od różnych czynników.

@edgar_k zdaje się że format double nie jest ściśle opisany.

Pytanie, czy format double jest ściśle opisane w tym zakresie w którym w jego zapis binary podstawiamy zapis binary intów z zakresu
rfree
Mirki poszukamy tego w standardzie?

Inty to zawsze 2-complement zapis.
K.....2
K.....2
@rfree:
@edgar_k:
@
rfree
gcvt


@Kebab92: w ogóle nie o tym piszemy. Mówimy tu o podstawianiu zmiennych, przez reinterpret_cast
fhrh
fhrh
fhrh
0
@Kebab92
double x =(double)'a';//It should compile
char character=(char) x;
KrzaQ2
Inty to zawsze 2-complement zapis.


@rfree: Nope.
HidalgoDonPedro
HidalgoDonPedro
@Kebab92: 'c' w kodzie ascii to 99 więc do double zostanie zapisana ta wartość.
Jeżeli zrobisz tak:
double dbl = 'c';
char chr = (char)dbl;
to w zmiennej chr będziesz miał literę 'c'.