1. C++ / Говнокод #21586

    −18

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    #include <iostream>
    
    #define GAY(x) #x
    #define STR(x) GAY(x)
    
    #define A0(x, i) (i)*10 + (*(x)-'0')
    #define A1(x, i) (*(x + 1) ? A0(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A2(x, i) (*(x + 1) ? A1(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A3(x, i) (*(x + 1) ? A2(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A4(x, i) (*(x + 1) ? A3(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A5(x, i) (*(x + 1) ? A4(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A6(x, i) (*(x + 1) ? A5(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A7(x, i) (*(x + 1) ? A6(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A8(x, i) (*(x + 1) ? A7(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A9(x, i) (*(x + 1) ? A8(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A10(x, i) (*(x + 1) ? A9(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A11(x, i) (*(x + 1) ? A10(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A12(x, i) (*(x + 1) ? A11(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A13(x, i) (*(x + 1) ? A12(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A14(x, i) (*(x + 1) ? A13(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A15(x, i) (*(x + 1) ? A14(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    
    
    #define STOI(x) A15(STR(x), 0)
    
    
    int main(int argc, char *argv[])
    {
        std::cout << STOI(01) << std::endl <<
                              STOI(08) << std::endl <<
                              STOI(0123) << std::endl <<
                              STOI(0123456789) << std::endl;
    
        return 0;
    }

    Теперь можно добавлять нолики в начало чисел для выравнивания!

    Запостил: gost, 27 Октября 2016

    Комментарии (16) RSS

    • Астрологи объявили неделю тернароговна.
      Ответить
    • Чето говено выровнял.
      Ответить
    • STOI SYKA
      Ответить
    • На мой взгляд было большой ошибкой, когда в сишке (и в языках с сиподобным синтаксисом) решили ведущий нолик использовать для обозначения восьмеричной системы счисления (которая очень редко используется).

      Хорошо, что gost смог сгладить это недоразумение.
      Ответить
      • Вообще-то восмеричный числовой литерал используется в сишке чаще всего (после раскрытия макросов), по крайней мере чаще любой другой константы.
        Ответить
        • Восьмеричный литерал выглядит естественно для никсовых прав доступа типа rwx, когда используются триады битовых флагов. А где ещё применение восьмеричных литералов можно обосновать?
          Ответить
          • В ассемблере для PDP-11?
            Ответить
          • Я могу поспорить, что любой активно програмирующий на сишке использует 8-е литералы ежедневно. По крайней мере определённую восьмеричную константу. Очень часто она связана с указателями. Или начальными значениями счётчиков.
            Ответить

    Добавить комментарий