Witam,
Uczę się dopiero programować, więc proszę o wyrozumiałość.
Napisałem taki prosty programik, który zamienia litery na liczby, którymi tak na prawdę są.
Oto kod programiku:
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
char litera;
cout << "Wprowadz litere: ";
cin >> litera;
int numer = litera;
cout << "Litera: " << litera << " ma wartosc: "
<< " dec: " << dec << numer << " hex: " << hex << numer;
getch();
return 0;
}
Moje pytanie: dlaczego wszystkie polskie litery mają wartości ujemne np. jak wpiszę "ą" to dostaję:
wartość int = -91
(minus) a wartość hex = ffffffa5
, przy czy czym prawidłowa jest wartość a5
(dla kodowania CP852). Dlaczego to tak wygląda i skąd wzięły się te wartości ffffff
, bo wygląda na to, że jak się je odetnie, to te pozostałe dwie pokazują prawidłową wartość ze strony kodowej CP852. Problem w tym, że w wartościach hex ffffffa5
to nie to samo co 000000a5
.
Kiedy wpisuję normalne (nie polskie) litery to wszystko się zgadza i wartości liter są "normalne".
Siedzę już nad ta zagadką 2 godz. i za nic nie mogę pojąć co jest grane.