- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
if(x*x > = 0)
{
// какие-то действия
}
else
{
// какие-то действия
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+177
if(x*x > = 0)
{
// какие-то действия
}
else
{
// какие-то действия
}
Код встретил у знакомой студентки :3 Не, ну а в вдруг?
+168
template <typename T> T min3 (T v1, T v2, T v3) {
T min = v1;
if (min > v2)
min = v2;
if (min > v3)
min = v3;
return min;
};
template <typename T> T max3 (T v1, T v2, T v3) {
T max = v1;
if (max < v2)
max = v2;
if (max < v3)
max = v3;
return max;
};
Как говорится - главное, чтоб работало.
+156
if (licenseImageAvailable) {
QPoint p1, p2, p3;
p1.setX (top->getUIntSeq ("X1",licenseImageAvailable));
p1.setY (top->getUIntSeq ("Y1",licenseImageAvailable));
p2.setX (top->getUIntSeq ("X2",licenseImageAvailable));
p2.setY (top->getUIntSeq ("Y2",licenseImageAvailable));
p3.setX (top->getUIntSeq ("X3",licenseImageAvailable));
p3.setY (top->getUIntSeq ("Y3",licenseImageAvailable));
if (licenseImageAvailable)
seq = seq && imageElement->getNeedJPEG (targetSize.width (),
targetSize.height (), &targetImg, top, &licenseImage, p1, p2, p3);
else
seq = seq && imageElement->getNeedJPEG (targetSize.width (), targetSize.height (), &targetImg, top);
} else {
seq = seq && imageElement->getNeedJPEG (targetSize.width (), targetSize.height (), &targetImg, top);
}
+146
this++;
Думаю, так нельзя в члене класса, но выглядит все равно забавно.
+174
const char * strtime(const time_t * t){
tm tt;
const int dt_len = 60;
char str_dt[dt_len];
localtime_r(t, &tt);
strftime(str_dt, dt_len, "%d.%m.%Y %H:%M:%S", &tt);
std::string str(str_dt);
return str.c_str();
}
Код, как ни странно, работал несколько лет, пока проект не трогали и байты не сместились. Неудивительно, что код вместо времени стал возвращать имя функции, из которого вызывался.
+168
#define TPLM Tuple(TPLMOVE) +
#define TPLC Tuple(TPLCOPY) +
#define TPL Tuple() +
//#define GTPL Tuple() +
#define TPLERROR(t) { memcpy(0, 0, 1); }
#define TPLMOVE 1 // copy to tuple, memset 0 original. = destruct dest, copy to dest.
#define TPLCOPY 2 // copy constructor = destruct dest, copy to dest
#define TPLGET 3 // destruct all values :)
#include <memory.h>
#include <math.h>
#include <stdio.h>
#include <typeinfo>
#include <string.h>
#define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a, b) (((a) < (b)) ? (a) : (b))
unsigned int mcrc(char* name, unsigned int sz){
unsigned int ret=0; if(!sz) sz=(unsigned int)strlen(name);
char*t=name+sz; int p=0;
while(name<t){
*(((char*)&ret)+p)+=*name; p++;
if(p>=4) p=0; name++;
}
return ret;
}
struct Tupled{ unsigned int sz, type; void *v; char data[0]; };
class Tuple{
int count, set, dusz, dasz;
unsigned char *data;
int type; int adel;
public:
Tuple(){ count=0; set=0; type=0; dusz=0; dasz=0; data=0; adel=0; }
Tuple(int t){ type=t; }
~Tuple(){ if(count!=set) TPLERROR("~Tuple"); delete data; }
Tuple(Tuple &t){
count=t.count; set=t.set; dusz=t.dusz; dasz=t.dasz; data=t.data;
t.count=0; t.set=0; t.data=0; adel=1;
}
template <class T>
Tuple& operator+(T &t){ if(!adel) Add(&t, sizeof(t), t); else Del(&t, sizeof(t), t); return *this; }
template <class T>
Tuple& operator-(T &t){ if(!adel) Add(&t, sizeof(t), t); else Del(&t, sizeof(t), t); return *this; }
/* Операторы '*', '/', ',', '>', '<' код идентичен */
template <class T>
void Add(void *v, int s, T &t){
if(dasz-dusz<s+4+(int)sizeof(void*)){
unsigned char *ldata=data;
data=new unsigned char[dasz+max(128, s+4)];
memcpy(data, ldata, dasz);
dasz+=max(128, s);
delete [] ldata;
}
Tupled &d=*(Tupled*)(data+dusz);
d.sz=s;
memcpy(&d.v, v, sizeof(void*));
if(type==TPLCOPY){ *(T*)d.data=t; } else memcpy(d.data, v, s);
if(type==TPLMOVE) t.~T();
d.type=mcrc((char*)typeid(t).name(), 0);
dusz+=sizeof(Tupled)+s; count++;
}
template <class T>
void Del(void *v, int s, T &t){
if(set>=count){ TPLERROR("Tuple::Set"); return ; }
unsigned char *p=GetData(set);
if(!p){ TPLERROR("Tuple::NoData"); return ; }
Tupled &d=*(Tupled*)p;
unsigned int tp=mcrc((char*)typeid(t).name(), 0);
if(tp!=d.type){ TPLERROR("Tuple::TYPE"); return ;}
t.~T();
if(d.sz!=s){ TPLERROR("Tuple::SIZE"); return ;}
memcpy(v, d.data, d.sz);
set++;
}
unsigned char* GetData(int c){
if(c>=count) return 0;
unsigned char *p=data;
for(int i=0; i<c; i++){
p+=sizeof(Tupled)+*(int*)p;
}
return p;
}
};
Очередной самобытный велосипед от микеля.
http://rsdn.ru/forum/src/4218954.aspx
+159
HMODULE nt=LoadLibrary("Ntdll.dll");
PROCESS_BASIC_INFORMATION pbi={0};
ZWQUERYINFORMATIONPROCESS _ZwQueryInformationProcess;
_ZwQueryInformationProcess = (ZWQUERYINFORMATIONPROCESS)GetProcAddress(nt, "ZwQueryInformationProcess");
DWORD rlg;
SetLastError(0);
_ZwQueryInformationProcess(divine,0,&pbi,sizeof(pbi),&rlg);
printf("%d",GetLastError());
источник: http://www.wasm.ru/forum/viewtopic.php?pid=426270#p426270
+162
QString SomeClass::newzipname (const QString serial) {
QDateTime dt=QDateTime::currentDateTime();
return serial
+QString("%1%2%3%4%5%6")
.arg (QString::number (dt.date().year()-2000), 2, '0')
.arg (QString::number (dt.date().month()), 2, '0')
.arg (QString::number (dt.date().day()), 2, '0')
.arg (QString::number (dt.time().hour()), 2, '0')
.arg (QString::number (dt.time().minute()), 2, '0')
.arg (QString::number (dt.time().second()), 2, '0')
+".zip";
}
+160
private:
private:
friend class boost::iterator_core_access;
Никому не покажу своего друга-буста
+159
enum EPlayerStat { ... };
typedef std::pair<EPlayerStat, int> StatDelta;
...
void GameClassT::showTooltipStats(const float2& pos, const std::vector<StatDelta>& statDeltas)
{
//...
if (statDeltas.empty())
return;
// Выбираем тип баббла в зависимости от количества статов, которые в нём нужно отобразить.
// Баббл с последним статом "wish chance" выглядит немного не так, как остальные,
// но возможен (пока что) только для варианта с тремя статами.
Bubble* const bubblesNormal[] =
{
&m_bubbleTooltipStats1SE,
&m_bubbleTooltipStats2SE,
&m_bubbleTooltipStats3SE,
&m_bubbleTooltipStats4SE
};
Bubble* const bubblesWish[] =
{
nullptr,
nullptr,
&m_bubbleTooltipStats3SE_Wish,
nullptr
};
Bubble* const* const bubbles = (statDeltas.end() == std::find_if(statDeltas.begin(), statDeltas.end(),
[](const StatDelta& delta) -> bool { return delta.first == PS_WishChance; }))
? bubblesNormal : bubblesWish;
Bubble& bubble = *bubbles[(statDeltas.size() <= ARRAY_SIZE(bubbles)) ? (statDeltas.size() - 1) : (ARRAY_SIZE(bubbles) - 1)];
if (&bubble == nullptr)
{
RZT_LOG_WARNING("Bubble with %d stats with wish chance is not supported!", statDeltas.size());
return;
}
// Настраиваем выбранный баббл.
//... (здесь вызываются всякие методы через ссылку bubble)
}
Внезапные изменения в спецификации такие внезапные.
Мне всегда становится страшно, когда из-за них я начинаю рожать что-то подобное.