1. Си / Говнокод #21658

    −2

    1. 1
    2. 2
    3. 3
    4. 4
    static volatile stm32f4_usart *usart_get_regs(const console_tbl *ct)
    {
      return (stm32f4_usart *) ct->ulCtrlPort1;
    }

    А если будет замест volatile - inline, возможен вариант, что компилятор выкинет эту функцию?

    MiD, 07 Ноября 2016

    Комментарии (26)
  2. Си / Говнокод #21646

    −1

    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
    #include <stddef.h>
    #define H 0.2
    #define A 0
    #define B 2
    void main( void ) 
    {
    	const double h = 0.2;
    	const int b = 2;
    	const int a = 0;
    	
    	const size_t size1 = (b - a) / h;
    	double arr1[size1] = { 1 }; // Вы видете тут VLA? А он есть
    	
    	const size_t size2 = (B - A) / H;
    	double arr2[size2] = { 1 }; // И тут есть
    	
    	double arr3[(const size_t)((b - a) / h)] = { 1 }; // И тут тоже
    	
    	double arr4[(const size_t)((B - A) / H)] = { 1 }; // И здесь тоже
    	
    	double arr5[10] = { 1 }; // Ну хоть тут нет, слава Селестии
    }

    Такие дела. Без инициализатора, конечно же, работает. Но мне интересно, почему он это именует variable-sized object? Везде константы.

    a1batross, 06 Ноября 2016

    Комментарии (34)
  3. Си / Говнокод #21610

    +4

    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
    #include<stdio.h>
    int main(){
    printf("Вітаю Вас в мою програму!\n");
    printf("Програма призначена за для перекладу зі 100\n");
    printf("бальною шкалу в 5 бальну шкалу.\n");
    printf("При наступних умовах:\n");
    puts("30>=1"); 
    puts("31-50>=2");
    puts("51-72>=3");
    puts("73-86>=4");
    puts("87-100>=5");
    printf("Ведіть оцінку:\n");
    int otsinka;
    scanf("%d",&otsinka);
    printf("Ви ввели оцінку %i\n",otsinka);
     
    if((otsinka>=1)==(otsinka<=30)){printf("Ваш результат: 1 бал\n");}
    if((otsinka<=50)==(otsinka>=31)){printf("Ваш результат: 2 бала\n");}
    if((otsinka<=72)==(otsinka>=51)){printf("Ваш результат: 3 бала\n");}
    if((otsinka<=86)==(otsinka>=73)){printf("Ваш результат: 4 бала\n");}
    if((otsinka<=100)==(otsinka>=87)){printf("Ваш результат: 5 балів\n");}
     
    return 0;
    }

    dm_fomenok, 31 Октября 2016

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

    −1

    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
    void iseq(int a, int b){ assert(a==b); }
    void ismt(int a, int b){ assert(a+1==b); }
    
    int main(int argc, char **argv){
    
    	{ int j=100, *jp; jp=&argc; iseq(j++, j); assert(j==101); } //100, 100
    	{ int j=100, *jp; iseq(j++, j); jp=&j; assert(j==101); } //100, 100
    	{ int j=100, *jp; iseq(j++, j); assert(&j && j==101); } //100, 100
    	{ int j=100, *jp; ismt(j++, j); assert(j==101); } //100, 100
    	
    	{ int j=100, *jp; jp=&j; printf("\n%d, %d\n", j++, j); assert(j==101); } //100, 100
    	{ int j=100, *jp; printf("%d, %d\n", j++, j); jp=&j; assert(j==101); } //100, 100
    	{ int j=100, *jp; printf("%d, %d\n", j++, j); assert(&j && j==101); } //100, 100
    	{ int j=100; printf("%d, %d\n", j++, j); assert(j==101); } //100, 101
    	
    	{ int j=100, *jp; jp=&j; printf("\n%d, %d\n", ++j, j); assert(j==101); } //101, 100
    	{ int j=100, *jp; printf("%d, %d\n", ++j, j); jp=&j; assert(j==101); } //101, 100
    	{ int j=100; printf("%d, %d\n", ++j, j); assert(j==101); } //101, 101
    	 
    	return 0;
    }

    Кто нибудь знает почему ЭТО работает так? Проверял на нескольких компиляторах везде такой эффект.

    rst256, 31 Октября 2016

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

    −3

    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 <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
       int i,n,a,b,f=0,k=0;
    
       scanf("%d",&n);
    
       for(i=1;i<=n;i++){
       }
    
       while(i!=0){
        i=i/10;
        f++;
       }
    
        while(i<=n){
    
        a=a/10;
        b=b/10;
        a=a%10;
        b=b%10;
    
        i=a%(pow(10,f))+b*(pow(10,f));
        if(i%a==0&&i%b==0)k++;
    
        i=i/10;
        i=i%10;
    }
        printf("%d",k);
    
        return 0;
    }

    Найти количество натуральных чисел, не превосходящих N, и делящихся на каждую из своих цифр.

    plkvich691, 30 Октября 2016

    Комментарии (6)
  6. Си / Говнокод #21585

    +4

    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
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    #include <stdio.h>
    
    #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 PP_ARG_N( \
              _1,  _2,  _3,  _4,  _5,  _6,  _7,  _8,  _9, _10, \
             _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, \
             _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, \
             _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, \
             _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, \
             _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, \
             _61, _62, _63, N, ...) N
     
    /* Note 63 is removed */
    #define PP_RSEQ_N()                                        \
             62, 61, 60,                                       \
             59, 58, 57, 56, 55, 54, 53, 52, 51, 50,           \
             49, 48, 47, 46, 45, 44, 43, 42, 41, 40,           \
             39, 38, 37, 36, 35, 34, 33, 32, 31, 30,           \
             29, 28, 27, 26, 25, 24, 23, 22, 21, 20,           \
             19, 18, 17, 16, 15, 14, 13, 12, 11, 10,           \
              9,  8,  7,  6,  5,  4,  3,  2,  1,  0
     
    #define PP_NARG_(...)    PP_ARG_N(__VA_ARGS__)    
     
    /* Note dummy first argument _ and ##__VA_ARGS__ instead of __VA_ARGS__ */
    #define PP_NARG(...)     PP_NARG_(_, ##__VA_ARGS__, PP_RSEQ_N())
    
    
    #define MAX_1(VAR, ...) \
      VAR
     
    #define MAX_2(VAR, ...) \
      (((VAR)>MAX_1(__VA_ARGS__))?(VAR):MAX_1(__VA_ARGS__))
     
    #define MAX_3(VAR, ...) \
      (((VAR)>MAX_2(__VA_ARGS__))?(VAR):MAX_2(__VA_ARGS__))
     
    #define MAX_4(VAR, ...) \
      (((VAR)>MAX_3(__VA_ARGS__))?(VAR):MAX_3(__VA_ARGS__))
     
    #define MAX_5(VAR, ...) \
      (((VAR)>MAX_4(__VA_ARGS__))?(VAR):MAX_4(__VA_ARGS__))
     
    #define MAX_6(VAR, ...) \
      (((VAR)>MAX_5(__VA_ARGS__))?(VAR):MAX_5(__VA_ARGS__))
     
    #define MAX_7(VAR, ...) \
      (((VAR)>MAX_6(__VA_ARGS__))?(VAR):MAX_6(__VA_ARGS__))
     
    #define MAX_8(VAR, ...) \
      (((VAR)>MAX_7(__VA_ARGS__))?(VAR):MAX_7(__VA_ARGS__))
     
    #define MAX_9(VAR, ...) \
      (((VAR)>MAX_8(__VA_ARGS__))?(VAR):MAX_8(__VA_ARGS__))
     
    #define MAX_10(VAR, ...) \
      (((VAR)>MAX_9(__VA_ARGS__))?(VAR):MAX_9(__VA_ARGS__))
     
    #define MAX_11(VAR, ...) \
      (((VAR)>MAX_10(__VA_ARGS__))?(VAR):MAX_10(__VA_ARGS__))
    //..... дальше лень ...
     
    #define MAXS_(N, ...) \
      SPLICE(MAX_, N)(__VA_ARGS__)
     
    #define MAXS(...) \
      MAXS_(PP_NARG(__VA_ARGS__), __VA_ARGS__)
    
     
    int main(void)
    {
     printf("%d", MAXS(24, 324, 377, 347, 100500, 2442, 224, 7428));
    }

    Макрос MAXS() который принимает произвольное число аргументов и через тернарники заворачивает их, было сделано на основе http://govnokod.ru/14511 говна.

    j123123, 27 Октября 2016

    Комментарии (44)
  7. Си / Говнокод #21253

    +1

    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
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    /*	p11
    Язык Turbo C
    Основы программирования
    Теория. Задачи   */
    
    /*	p11 (15k), p13 (22k), p16, p18, p19 (23k)
    p21 (24k), p53 (25k), p54, p55   */
    
    #include <conio.h>
    #include <math.h>
    #include <stdio.h>
    
    j ();		/*   Решение - любое число.   */
    k ();		/*   Решений нет.   */
    l (float);		/*   Один корень.   */
    m (float, float);	/*   Два корня.   */
    n (int, int);	/*   n = a ^ b.   */
    o (float, float, float);	/*   Три корня.   */
    p (float, float, float, float);	/*   Четыре корня.   */
    
    
    main ()
    {
       int a, b, c, d;
       int g, h;
       float s, t;
    
       printf ("Введите четыре целых числа: ");
       scanf ("%i%i%i%i", &a, &b, &c, &d);
    
       printf ("p13 - 2. ");
       if (a == 0)
          if (b == 0)
    	 if (c == 0) j (); else k ();
          else
    	 l ((float) -c / b);
       else
       {
          g = b * b - 4 * a * c;
          if (g < 0)  k ();  else
    	 if (g == 0)
    	    l (-b / 2. / a);
    	 else
    	    m ((-b + sqrt (g)) / 2 / a, (-b - sqrt (g)) / 2 / a);
       }
    
       printf ("p21 - 6. ");
       if (a == 0)
          if (b == 0)
    	 if (c == 0) j (); else k ();
          else
          {
    	 s = (float) -c / b;
    	 if (s < 0)  k ();  else if (s == 0)  l (0);  else m (sqrt (s), -sqrt (s));
          }
       else
       {
          g = b * b - 4 * a * c;
          if (g < 0)  k ();  else
    	 if (g == 0)
    	 {
    	    s = -b / 2. / a;
    	    if (s < 0)  k ();  else if (s == 0)  l (0);  else m (sqrt (s), -sqrt (s));
    	 }
    	 else
    	 {
    	    s = (-b + sqrt (g)) / 2 / a;
    	    t = (-b - sqrt (g)) / 2 / a;
    	    if (s < 0)
    	       if (t < 0)  k ();  else if (t == 0)  l (0);  else m (-sqrt (t), sqrt (t));
    	    else
    	       if (s == 0)
    		  if (t < 0)  l (0);  else o (-sqrt (t), 0, sqrt (t));
    	       else
    		  if (t < 0)
    		     m (-sqrt (s), sqrt (s));
    		  else
    		     if (t == 0)
    			o (-sqrt (s), 0, sqrt (s));
    		     else
    			p (-sqrt (s), -sqrt (t), sqrt (t), sqrt (s));
    	 }
       }
    
       getch ();
       printf ("\n");
    }
    
    
    j () {printf ("Решение - любое число.\n");}
    k () {printf ("Решений нет.\n");}
    l (float a) {printf ("x = %.4g.\n", a);}
    m (float a, float b) {printf ("x1 = %.4g, x2 = %.4g.\n", a, b);}
    o (float a, float b, float c) {printf ("x1 = %.4g, x2 = %.4g, x3 = %.4g.\n", a, b, c);}
    p (float a, float b, float c, float d) {printf ("x1 = %.4g, x2 = %.4g, x3 = %.4g, x4 = %.4g.\n", a, b, c, d);}

    Решить биквадратное уравнение.

    abc, 23 Сентября 2016

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

    +2

    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 <stdio.h>
    #include <sys/time.h>
    #define p printf
    #define r putchar
    #define n "\n\e[1;1H\e[2J"
    #define l long
    #define f for
    #define v void
    #define j int
    #define k char
    #define N P(i);
    #define u usleep
    #define you p(n);u(T);}}}o(g,3e5,1);o(w,1e5,3);o(q,4e5,1);o(a,4e4,4);
    #define know "\x49\x74\x20\x69\x73\x20\x67\x6f\x6e\x6e\x61\x20\x62\x65\x20\x6c\x65\x67\x65\x6e\x2e\x2e\x2e";
    #define this f(;;){S=time(0);l h=S/3600%24;
    #define scare {f(j x=0;(E[x])!='\0';x++){f(j y=0;y<=x;y++){r(E[y]);}
    #define code l m=S/60%60;l s=S%60;P(i-3);h>9?p("%s%li:",d,h):p("%s0%li:",d,h);
    #define is m>9?p("%li:",m):p("0%li:",m);s>9?p("%li%s\n",s,d):p("0%li%s\n",s,d);
    #define Best N p("\xffffffe3\xffffff80\xffffff80\x28\xffffffe3\xffffff80\xffffff80\x28\xffffffe3\xffffff83\xffffffbd\xa");N p("\xffffffe3\xffffff80\xffffff80\x7c\xffffffe3\xffffff80\xffffff80\x7c\xffffffe3\xffffff80\xffffff81\xffffffef\xffffffbc\xffffffbc\xa");N p("\xffffffe3\xffffff80\xffffff80\x7c\x20\xffffffe4\xffffffb8\xffffffbf\x20\xffffffef\xffffffbc\xffffffbc\x20\xffffffe2\xffffff8c\xffffff92\x29\xa");N p("\xffffffe3\xffffff80\xffffff80\x7c\x20\x7c\xffffffe3\xffffff80\xffffff80\xffffffe3\xffffff80\xffffff80\x29\x20\x2f\xa");
    #define I j main(){k*g=
    #define kidding N p("\xffffffe3\xffffff80\xffffff80\xffffffe3\xffffff80\xffffff80\x20\xffffffef\xffffffbe\xffffff9a\xffffffe3\xffffff80\xffffff80\xffffffe3\xffffff83\xffffff8e\xffffffe3\xffffff80\xffffff80\xffffffe3\xffffff80\xffffff80\x20\xffffffe3\xffffff83\xffffffbd\x5f\xffffffe3\xffffff81\xffffffa4\xa");N p("\xffffffe3\xffffff80\xffffff80\xffffffe3\xffffff80\xffffff80\x2f\xffffffe3\xffffff80\xffffff80\x2f\xa");N p("\xffffffe3\xffffff80\xffffff80\x20\x2f\xffffffe3\xffffff80\xffffff80\x2f\x7c\xa");
    #define but l i=0;l S;v P(l c){f(l i=c;i>=0;i--){p(" ");}}l b=0;l t=15e4;
    #define may k*a="\x4c\x45\x47\x45\x4e\x44\x41\x52\x59\x21";k*d="";j c;v o(k*E,l T,j z){f(;z>0;z--)
    #define safe if(t==99){p(n);t=15e4;d=!(S%11)?" || ":!(S%7)?" ## ":!(S%3)?" $$ ":!(S%13)?" !! ":
    #define regards N p("\x20\xffffffe3\xffffff83\xffffff8e\x20\x29\xffffffe3\xffffff80\xffffff80\xffffffe3\xffffff80\xffffff80\x4c\xffffffef\xffffffbe\xffffff89\xa");N p("\x28\x5f\xffffffef\xffffffbc\xffffff8f\xa");u(t);t=(t=t-(t/1e2));
    #define Just p("\xffffffe3\xffffff80\xffffff80\xffffffe3\xffffff80\xffffff80\x20\xffffffef\xffffffbc\xffffffbc\x28\x20\xffffffcd\xffffffa1\xffffffc2\xffffffb0\x20\xffffffcd\xffffff9c\xffffffca\xffffff96\x20\xffffffcd\xffffffa1\xffffffc2\xffffffb0\x29\xa");N p("\xffffffe3\xffffff80\xffffff80\xffffffe3\xffffff80\xffffff80\xffffffe3\xffffff80\xffffff80\x20\x3e\xffffffe3\xffffff80\xffffff80\x20\xffffffe2\xffffff8c\xffffff92\xffffffe3\xffffff83\xffffffbd\xa");N p("\xffffffe3\xffffff80\xffffff80\xffffffe3\xffffff80\xffffff80\xffffffe3\xffffff80\xffffff80\x2f\x20\xffffffe3\xffffff80\xffffff80\x20\xffffffe3\xffffff81\xffffffb8\xffffffef\xffffffbc\xffffffbc\xa"); N p("\xffffffe3\xffffff80\xffffff80\xffffffe3\xffffff80\xffffff80\x20\x2f\xffffffe3\xffffff80\xffffff80\xffffffe3\xffffff80\xffffff80\x2f\xffffffe3\xffffff80\xffffff80\xffffffef\xffffffbc\xffffffbc\xffffffef\xffffffbc\xffffffbc\xa");
    #define it k*w="\x77\x61\x69\x74\x20\x66\x6f\x72\x20\x69\x74\x2e\x2e\x2e";k*q="\x64\x61\x72\x79\x21";
    #define likely " ~~ ";continue;}N p("\xffffffe2\xffffff8a\xffffff82\x5f\xffffffe3\xffffff83\xffffffbd\xa");N p("\xffffffe3\xffffff80\xffffff80\x20\xffffffef\xffffffbc\xffffffbc\xffffffef\xffffffbc\xffffffbc\xa"); N
    #define pl7ofit p(n);b=(i>50||(i>0&&b==1))?1:0;i=b==1?i-1:i+1;}}
    
    I know it may scare you but this code is safe
    likely //...
    Just kidding
    Best regards
    pl7ofit

    Мой код для конкурса говнокодов, который занял 4-е место.
    *Даже на конкурсе дебилов занял четвертое место...*
    https://tproger.ru/events/shitcode-contest-result/

    pl7ofit, 18 Сентября 2016

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

    +3

    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
    #include <stdio.h>
    
    char dice(void) {
        static unsigned long destiny = 1;
        return destiny = destiny * 1103515245 + 12345;
    }
    
    char HACTEHbKA[0x10] = {
        196, 136, 230,  80,  83,
        237, 100,  51,  19, 166,
         12, 153, 229, 141, 125
    };
    
    int main() {
        char * love = HACTEHbKA, bormand;
        while (*love) putchar(*love++ ^ dice());
    }

    HACTEHbKA, 16 Сентября 2016

    Комментарии (34)
  10. Си / Говнокод #21181

    +8

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    %:include<stdio.h>
    int main()
    <%
      char a<:5:> = <%'??-', 'O', 'r', '??-', 'i'%>;
      char b = 201;
      int i;
      for (i = 0; i < 5; i++, b+=12)
      <%
        printf("%c", ??- (a<:i:> ??' b));
      %>
      return 0;
    %>

    Я просто оставлю это здесь.

    inkanus-gray, 13 Сентября 2016

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