- 1
- 2
- 3
unsigned b;
unsigned char num;
b = ((b & ((1 << num) - 1)) << ((sizeof(b) << 3) - num)) | (b >> num);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+141
unsigned b;
unsigned char num;
b = ((b & ((1 << num) - 1)) << ((sizeof(b) << 3) - num)) | (b >> num);
Долго не мог понять, что оно делает.
+142
/*!
* \brief is Printable Character
* \param c Character
* \return true/false
*/
static int isPrintableChar(char c)
{
if ((c < 'A' || c > 'Z') && (c < 'a' || c > 'z')
&& (c < '0' || c > '9') && (c != ' ') && (c != '\'')
&& (c != '(') && (c != ')') && (c != '+') && (c != ',')
&& (c != '-') && (c != '.') && (c != '/') && (c != ':')
&& (c != '=') && (c != '?') && (c != '_') && (c != '\\')
&& (c != '@') && (c != '"') && (c != '%') && (c != '$')
&& (c != '&') && (c != '#') && (c != ';')
//&& (c != 'В_')
&& (c != '<') && (c != '>') && (c != ']') && (c != '{')
&& (c != '}') && (c != '*') && (c != '^')) {
return 0;
} else {
return 1;
}
}
из открытого проекта chan_sccp
даже не знаю почему не использовать стандартный макрос isprint
#define isprint(c) ((c) >= ' ' && (c) <= '~')
+143
char str[256];
char ** pstr = (char **) &str;
char *p = str;
spprintf( &p, 0, "Ack errror; code=%d", res);
cnn->is_connected = 0;
zend_throw_exception(amqp_queue_exception_class_entry, *pstr ,0 TSRMLS_CC);
Так похапешники пишут на C.
+146
// vba-c.h
#include <stdio.h>
#include <conio.h>
#ifndef VBAC
# define VBAC
# define Sub void
# define EndSub }
# define main main() {
# define Dim __int32
# define As
# define Integer ;
# define Print( a ) printf( "%i\n", a );
# define Wait getch();
#endif
//main.c
#include "vba-c.h"
Sub main
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim mb, mc As Integer
a = 10;
b = 25;
c = 34;
d = 34;
mb = 0x00000002;
mc = 0x00000030;
b = b - 1;
c = c - 1;
a = a + b + c;
a = a / 3;
b = b / 4;
a = a - 1;
b = b + 1;
c = c - a + b;
d = ( b & mb ) & ( c & mc );
Print( a )
Print( b )
Print( c )
Print( d )
Wait
EndSub
После полугода изучения VBA, привыкание к хорошим, годным языкам, как Си очень проблематично. Что и порождает такие вот костыли...
+137
printf("%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t%f\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t%u\t", ...
+104
if(res < dateFrom)
{
res = dateFrom;
}
else
return dateFrom;
return res;
Выгребаю из проекта...
+127
#define v putchar
#define print(x) main(){v(4+v(v(52)-4));return 0;} /*
#>++++++4[>++++++<-]>++++.----.++++.**/
print(202*2);exit();
#define/*>.@*/exit()
Для кого-то покажется бояном, но меня улыбнуло. Явно искусственный код взятый со stackoverflow.com
+127
static void jz_update_dram_prev(unsigned int cur_mclk, unsigned int new_mclk)
{
/* No risk, no fun: run with interrupts on! */
if (new_mclk > cur_mclk) {
/* We're going FASTER, so first update TRAS, RCD, TPC, TRWL
* and TRC of DMCR before changing the frequency.
*/
jz_update_dram_dmcr(new_mclk);
} else {
/* We're going SLOWER: first update RTCOR value
* before changing the frequency.
*/
jz_update_dram_rtcor(new_mclk);
}
}
Кусок кода из официального™ китайского дерева исходников Линукса для одного System-on-Chip.
Реализует поддержку динамического изменения частоты процессора, а приведенная функция меняет тайминги для памяти (как обычно, весьма альтернативным способом). Что характерно, это вполне себе работает на реальном железе, и вроде бы оно у меня в этом куске ни разу не падало.
+136
static int getDns(int eid, webs_t wp, int argc, char_t **argv)
{
//....тут были еще переменные...
int type, idx = 0, req = 0;
if (ejArgs(argc, argv, T("%d"), &type) == 1) {
if (1 == type)
req = 1;
else if (2 == type)
req = 2;
else
return websWrite(wp, T(""));
}
//...дальше операции с req...
}
Такой вот китайский код демона goahead, пользуемого в embedded железяках...
+141
#define N2(n) #n"0",#n"1",#n"2",#n"3",#n"4",#n"5",#n"6",#n"7",#n"8",#n"9"
#define N30(n) #n N2(),#n N2(1),#n N2(2),#n N2(3),#n N2(4),#n N2(5),#n N2(6),#n N2(7),#n N2(8),#n N2(9)
#define N3(n,k) #n#k"0",#n#k"1",#n#k"2",#n#k"3",#n#k"4",#n#k"5",#n#k"6",#n#k"7",#n#k"8",#n#k"9"
#define N4(k) N3(k,0),N3(k,1),N3(k,2),N3(k,3),N3(k,4),N3(k,5),N3(k,6),N3(k,7),N3(k,8),N3(k,9)
#define N5 N30(),N4(1),N4(2),N4(3),N4(4),N4(5),N4(6),N4(7),N4(8),N4(9)
const char s[][4]={N5};
const int s_size = sizeof(s)/sizeof(s[0]);
void print_number(int n) {
if (n<s_size) {
printf("!%s\n",s[n]);
}
else {
printf("?%d\n",n);
}
}
Отсылка к #3376 http://govnokod.ru/3376
Вопрос к общественности: что бОльший говнокод, >100 строк строковых констант или 5-строчный пассаж на макросах?