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

ASCII na int

Ostatnio zmodyfikowano 2014-10-19 20:53
Autor Wiadomość
Rashmistrz
» 2014-10-19 19:15:44
Rozgryzłem to!
++i, i =( i << 'L' - 'A' ) - '"';

Zwiększenie o jeden. :F Nasze "i" jest równe 1.
Przecinek.
Przypisanie do "i" liczby 2014:
   'L'(76) odjąć 'A'(65) daje 11.
   Przesunięcie bitowe "i" (0001) w lewo o 11 co daje 2048.
   Odjęcie od 2048 34 daje nam 2014. :F
 
//EDIT: Tylko nie wiem do czego służy
static
. >_<
//Wiem tylko, że z tym dodatkiem automatycznie inicjalizowana zerem.
P-118945
Monika90
» 2014-10-19 19:34:47
A tak można?


#include <iostream>

int operator "" _m (const char*, std::size_t m) { return m; }

int main()
{
    std::cout << "mm"_m << ""_m << "m"_m << "mmmm"_m << std::endl;
}


nie ma żadnej cyfry
P-118947
Rashmistrz
» 2014-10-19 19:42:34
Moniu, mi się to nie kompiluje... ;_;
Settings->Compiler->Compiler Flags/ flaga -std=c++11

Jednak nie zmienia to tego, że tego kodu nie kminię...
P-118948
winio94
Temat założony przez niniejszego użytkownika
» 2014-10-19 19:43:27
Monika90, nie mam pojęcia co tam się dzieje ale u mnie się nie kompiluje, pisze że brakuje średnika w 7 linii :)

EDIT. kompiluje się, nawet nie pytam co tam się stało :)
P-118949
Rashmistrz
» 2014-10-19 19:54:31
nawet nie pytam co tam się stało :)
,a ja przeciwnie... chcę to wiedzieć.

Co to jest:
int operator "" _m( const char *, std::size_t m ) { return m; }

,a tu co się dzieje?:
std::cout << "mm" _m << "" _m << "m" _m << "mmmm" _m << std::endl;

Co robi ta "podłoga"?
P-118952
Monika90
» 2014-10-19 20:12:21
W C++ (od C++11) można definiować własne przyrostki dla literałów napisowych i innych. Ale muszą się one zaczynac od znaku podkreślenia, bo te które się nie zaczynają są zarezerwowane dla języka i biblioteki standardowej.

I właśnie to
int operator "" _m (const char*, std::size_t m) { return m; }
definiuje przyrostek _m, jeżeli teraz napiszesz "tekst"_m to zostanie wywołany powyższy operator, jako pierwszy parametr zostanie przekazany wskaźnik do napisu "tekst", a jako drugi długość tego napisu. Powyższy operator ""_m zwraca długość napisu dla którego został wywołany, więc "tekst"_m to teraz (prawie) to samo co liczba 5.
P-118955
Rashmistrz
» 2014-10-19 20:17:23
A co daje
const char *
?

//Wiem że bez tego nie działa.

Edit:
Szybko piszesz. xD
jako pierwszy parametr zostanie przekazany wskaźnik do napisu "tekst"
Tylko, że ja jeszcze nie znam się na wskaźnikach. ;_;
P-118958
pekfos
» 2014-10-19 20:30:11
Tylko, że ja jeszcze nie znam się na wskaźnikach. ;_;
No to nie ma co bardziej offtopować.
P-118961
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona