Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] kod znaku ASCII

Ostatnio zmodyfikowano 2010-07-04 02:07
Autor Wiadomość
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:
C/C++
#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 spacja

moglibyś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
P-18581
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.
P-18582
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)
P-18583
« 1 »
  Strona 1 z 1