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

Konwersje podstawowych typów

Ostatnio zmodyfikowano 2012-01-08 13:51
Autor Wiadomość
akwes
Temat założony przez niniejszego użytkownika
Konwersje podstawowych typów
» 2012-01-08 05:26:13
Konwersje mogą być pojmowane dwojako. Np. konwersja int na char może być w dwóch wariantach: maszynowej i ludzkiej. Maszynowa z int(4) zrobi char(4) natomiast ludzka z int(4) zrobi char('4').

I chodzi mi tutaj o właśnie takie ludzkie konwersje. Chciałem sobie to rozplanować ładnie i zrobiłem tabelkę.


x - ten sam typ
s - przez static_cast
w - wlasna funkcja
w* - wlasna funkcja zwracająca typ pochodny albo tracąca część informacji

W ramach robienia dziwnych rzeczy, chce sobie opracować wszystkie konwersje, nawet te niepotrzebne. Oczywiście "s" zostawię, ale chcę napisać wszystkie "w" i "w*".

Przy "w*" lepiej zwracać jednak inny typ (char* zamiast char) czy tracić część informacji? Czego byście się spodziewali po funkcji
FloatToChar( float );
?
Czy może zrobić obie wersje tylko że FloatToChar stratną i FloatToCharp z wskaźnikiem?

Dodam że itoa itp wynalazki z c chcę ominąć :P

Czy w tabelce nic nie pominąłem i czy jest poprawna?

//edit
no tak, zapomniałem uwzględnić jeszcze wchar_t

P-47559
szyx_yankez
» 2012-01-08 10:51:59
Czy w tabelce nic nie pominąłem i czy jest poprawna?
Własna funkcja z char na bool(i w drugą stronę)?
Czy nie wystarczy zwyczajne:
C/C++
char A = 'a';
bool B = bool( A );
 
P-47562
jsc
» 2012-01-08 12:06:09
Nie prościej:

bool a = bool ('s');

?
P-47563
akwes
Temat założony przez niniejszego użytkownika
» 2012-01-08 13:17:46
nie wystarczy i nie prościej :P

Bo ma być po ludzkiemu jak pisałem wyżej. Czyli dla
bool a = bool( '0' )
 będzie true a powinno być false.
P-47568
jsc
» 2012-01-08 13:29:18
No to '/0'.
P-47570
akwes
Temat założony przez niniejszego użytkownika
» 2012-01-08 13:50:41
No i co z tego że null da false, jak znak '0' dalej będzie dawał true?

W ten sposób można zrobić wszystkie konwersje. Z int na char też. Będziesz miał int 9 i zmienisz go na char 9 czyli na Horizontal Tab zamiast '9'. Trochę bez sensu, nie uważasz?

Jak będziesz miał tablicę charów

{ '0', '1', '0', '0', '0', '1' }

i będziesz chciał z nich zrobić tablice bool, to Ci wszystkie wyjdą true.

Dlatego dałem że jest potrzebna własna.
P-47576
DejaVu
» 2012-01-08 13:51:09
'0' = kod ascii 48. 48 != 0 => true
P-47577
« 1 »
  Strona 1 z 1