1. Список говнокодов пользователя j123123

    Всего: 332

  2. Си / Говнокод #23143

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    #include <stdio.h>;
    
    void check(int x, int y) {
      if (2*x == y && y < 0 && 0 <= 2*x) {
        puts("Impossible!");
      }
    }
    
    int main() {
      check(0x7F80007F, 0xFF0000FE);
    }

    https://runtimeverification.com/blog/?p=257
    When writing code for a specific compiler you can rely on the implementation-specified behavior, but signed overflow is still problematic. GCC promises that conversions between integer types will be reduced modulo the appropriate power of two when the value is not representable in the target type. This means that with GCC the conversion above will initialize var to -0x112234 on any architecture that GCC supports. However, only initialization and other conversions are safe. GCC still considers signed overflow in arithmetic as undefined behavior, and optimizes under the assumption that there will be no overflow. This can lead to apparently impossible results when signed values do overflow. Compiled with -O3, this program prints “Impossible!”.

    By adding apparently-redundant casts to 2*x to give (int)(2*(unsigned int)x), the calculation becomes implementation-specified behavior from an out-of-range conversion instead of undefined behavior. While this code may not be portable between compilers, GCC now guarantees the “impossible” code will not be executed even with -O3.

    j123123, 20 Июня 2017

    Комментарии (2)
  3. JavaScript / Говнокод #23111

    +1

    1. 1
    2. 2
    var x = '$$>1 ? eval(x.replace(/\\$\\$/g, $$-1)) + eval(x.replace(/\\$\\$/g, $$-2)) : 1';
    eval(x.replace(/\$\$/g, 5))

    Yo dawg, I heard you like evaluation. So I put evaluation in your evaluation so you could evaluate while you evaluate
    Фибоначчи, по мотивам http://govnokod.ru/20105#comment330201 хуйни

    j123123, 06 Июня 2017

    Комментарии (13)
  4. Си / Говнокод #23080

    +2

    1. 1
    2. 2
    3. 3
    for(i==1;i<=1000;i++)
    
    https://youtu.be/Tzl0ELY_TiM?t=89

    И эти люди хотят кого-то учить программированию?

    j123123, 30 Мая 2017

    Комментарии (70)
  5. Си / Говнокод #23073

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    for(uint64_t i = 0ULL; i <= 999999999ULL; i+= 1)
    {
        long double a =  0.00005l * i; // это чтоб в плавучке не накапливались ошибки.
        somefunction(a);
        ....
    }

    j123123, 26 Мая 2017

    Комментарии (11)
  6. PHP / Говнокод #23051

    0

    1. 1
    https://web.archive.org/web/20070125181458/http://2ch.ru/s/src/1158095011998.gif

    j123123, 21 Мая 2017

    Комментарии (0)
  7. Assembler / Говнокод #23014

    0

    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
    #define SPLICE(a,b) SPLICE_1(a,b)
    #define SPLICE_1(a,b) SPLICE_2(a,b)
    #define SPLICE_2(a,b) a##b
    #define LL(a,b) SPLICE_2(a,b)
    #define L(a) LL(a,LOC)
    
    
    #define LOC sub1
    .func sub1
    sub1:
        ljmp L(L1)
    
    L(L1):
        nop
    .endfunc
    
    #define LOC sub2
    .func sub2
    sub2:
        ljmp L(L1)
    
    L(L1):
        nop
    .endfunc

    Когда захотел сделать local labels в ассемблере через сишный препроцессор

    j123123, 12 Мая 2017

    Комментарии (55)
  8. Си / Говнокод #22876

    −33

    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
    #include <http://govnokod.ru/21585>
    
    // assembly output for f1_signed and f2_signed on GCC 7,6,5 ... versions are same
    
    signed char f1_signed(signed char a1, signed char a2, signed char a3)
    {
      return MAXS(a1,a2,a3,a1,a2,a3);
    }
    
    signed char f2_signed(signed char a1, signed char a2, signed char a3)
    {
      return MAXS(a1,a2,a3);
    }
    
    // assembly output for f1_unsigned and f2_unsigned on GCC 7,6,5 ... versions are differend
    // GCC compiler can't do same simplification for unsigned function
    
    // This function produces much more assembler code than second
    unsigned char f1_unsigned(unsigned char a1, unsigned char a2, unsigned char a3)
    {
      return MAXS(a1,a2,a3,a1,a2,a3);
    }
    
    unsigned char f2_unsigned(unsigned char a1, unsigned char a2, unsigned char a3)
    {
      return MAXS(a1,a2,a3);
    }

    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80574

    Очередной мой багрепорт в GCC. Компилятор GCC может заоптимизировать повторяющуйся в MAXS хрень для signed char, но не может для unsigned
    А вот Clang не может заоптимизировать ни то, ни другое. https://godbolt.org/g/7Kt9X0

    j123123, 30 Апреля 2017

    Комментарии (100)
  9. Си / Говнокод #22875

    −11

    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
    void *memcpy(void *__dest, __const void *__src, size_t __n)
    {
            int i = 0;
            unsigned char *d = (unsigned char *)__dest, *s = (unsigned char *)__src;
    
            for (i = __n >> 3; i > 0; i--) {
                    *d++ = *s++;
                    *d++ = *s++;
                    *d++ = *s++;
                    *d++ = *s++;
                    *d++ = *s++;
                    *d++ = *s++;
                    *d++ = *s++;
                    *d++ = *s++;
            }
    
            if (__n & 1 << 2) {
                    *d++ = *s++;
                    *d++ = *s++;
                    *d++ = *s++;
                    *d++ = *s++;
            }
    
            if (__n & 1 << 1) {
                    *d++ = *s++;
                    *d++ = *s++;
            }
    
            if (__n & 1)
                    *d++ = *s++;
    
            return __dest;
    }

    Царский анролл в memcpy, прямиком из ядра Linux

    http://lxr.free-electrons.com/source/arch/arm/boot/compressed/string.c

    j123123, 30 Апреля 2017

    Комментарии (41)
  10. JavaScript / Говнокод #22860

    −11

    1. 1
    https://habrahabr.ru/post/322052/

    Лямбда-исчисление на JavaScript

    j123123, 27 Апреля 2017

    Комментарии (21)
  11. Си / Говнокод #22854

    −16

    1. 1
    https://foxford.ru/wiki/informatika/tipy-tselyh-chisel-yazyka-s

    Вот такая хуйня получается, когда учебные материалы по Си пишут те, которые сами нихуя не знают Си и не читали Священный Драфт Стандарта. Сколько хуйни по ссылке вы можете найти?
    spoiler: https://habrahabr.ru/post/156593/

    j123123, 26 Апреля 2017

    Комментарии (31)