[C++] kod znaku ASCII
Ostatnio zmodyfikowano 2010-07-04 02:07
ison Temat założony przez niniejszego użytkownika |
[C++] kod znaku ASCII » 2010-07-04 01:25:18 Witam, wiele osób zna chyba 'trik' na windowsach z wyświetlaniem znaku przez przytrzymanie alt i wpisanie jakiejś liczby na klawiaturze numerycznej. Jednym z najbardziej znanych jest znak alt+0160, gdyż wygląda jak... spacja... a nią nie jest. Dzięki temu możemy przykładowo nazwać folder tak aby nie było widać jego nazwy. Ostatnimi czasy jednak zastanawiałem się czym tak naprawdę jest ten znak. Napisałem szybko program: #include <cstdio> int main() { printf( "%d %d\n", ' ', ' ' ); while( 1 ); }
z tym że w pierwszych apostrofach wpisywałem znak alt+0160... po skompilowaniu trochę się jednak zdziwiłem output: -96 32
tu pojawia się moje pytanie jak i mała prośba, jak to możliwe że dany znak ma kod ASCII<0? tak czy owak char w GNU GCC Compiler (nie wiem jak w innych) jest domyślnie unsigned... więc nie jest to możliwe żeby był mniejszy od 0 pomyślałem sobie, że jeśli jest już ujemny to sprawdzę chociaż znaki o kodzie 255-96 oraz 128-96. znak 255-96 odpada, gdyż wygląda zupełnie inaczej, a znak o kodzie 128-96 czyli 32 to zwykła spacjamoglibyście przekopiować ten kod, skompilować go i podać tu output? //edit niestety kodowanie na tej stronie zamieniło znak alt+0160 na zwykłą spację nie wiem czy na innych systemach operacyjnych również da się wypisywać znaki w ten sposób (trzymając alt i wpisując liczbę), wiec prośbę o podanie output'u kieruję szczególnie do windows'owców :p |
|
DejaVu |
» 2010-07-04 01:49:50 unsigned char => 0 .. 255 signed char => -128 .. 127 char => zależne od ustawienia kompilatora - zazwyczaj jest to tryb signed.
Innymi słowy zrób rzutowanie na unsigned char i będziesz miał prawidłowy kod ascii. |
|
ison Temat założony przez niniejszego użytkownika |
» 2010-07-04 02:07:56 znak 160 a z kreseczką u góry
szczerze mówiąc to jeśli tego znaku przypominającego spację nie ma w tabeli ASCII to spodziewałem się czegoś w stylu że wypisze mi znak zerowy czyli NULL :p co więcej to jest trochę dziwne bo mogę np. nazwać folder tym znakiem i normalnie na nim operować przez konsolę (pisząc właśnie ten znak, chociaż nie ma go w tabeli ASCII) |
|
« 1 » |