ASCII na int
Ostatnio zmodyfikowano 2014-10-19 20:53
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. |
|
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 |
|
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ę...
|
|
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 :) |
|
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"? |
|
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. |
|
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. ;_; |
|
pekfos |
» 2014-10-19 20:30:11 Tylko, że ja jeszcze nie znam się na wskaźnikach. ;_; |
No to nie ma co bardziej offtopować. |
|
1 « 2 » 3 |