- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
int abs(int x)
{
int a = x;
if(x >= 0)
{
return a;
}
else if(x < 0)
{
a = a^2;
a = sqrt(a);
return a;
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−2
int abs(int x)
{
int a = x;
if(x >= 0)
{
return a;
}
else if(x < 0)
{
a = a^2;
a = sqrt(a);
return a;
}
}
Поиск абсолютного значения числа.
+2
bool matchingNumerals(int num)
{
QString str = QString("%1").arg(num);
for (int i = 0; i < 10; i++)
if (str.split(QString("%1").arg(i)).size() > 2)
return true;
return false;
}
Функция, определяющая, есть ли в числе одинаковые цифры на великой могучей Qt.
+1
// Определение метода Q3CanvasText::text()
class Q_COMPAT_EXPORT Q3CanvasText : public Q3CanvasItem {
//...
QString text() const;
//...
};
// Далее уже в "моем" классе строчка:
class CDevice : public CDiagramObject {
// ...
private:
Q3CanvasText * m_pTitle;
//....
public:
const QString & stitle() const { return m_pTitle->text(); } // обратим вниманиена возвращаемый тип
// ...
};
// Еще один класс и отображение тултипа при наведении
void CDiagramView::showToolTip( const QPoint & p, CDevice * d ) {
if( d ) {
QString tmp;
if( d->group() == QString::null || d->group() == "" )
tmp = ( d->stitle().left( d->stitle().indexOf(":") ) ); // вылетало здесь : d->stitle().indexOf(":") segmentation fault
else
tmp = d->group();
//.....
}
}
Нашел магию!
Юзаю Qt 4.8.6 в Linux
Под Виндой новая версия перепиливаемой проги компилится и работает,
под Линухом новая версия вылетает, старая робит.
Соль в том, что метод stitle() по факту возвращает ссылку на копию текста возвращенного Q3CanvasText::text(), которая внезапно удаляется при выходе из метода.
Но почему тот же gcc под виндой скомпилил это без багов?
+9
int naive_show_int(int x) {
char buf[32];
char *p = buf + sizeof(buf);
*--p = 0;
int negative = 0;
if (x < 0) {
x = -x;
negative = 1;
}
while (x > 0) {
if (x <= 0)
return -1;
int digit = '0' + x % 10;
if (digit < '0' || digit >= '9')
return -1;
*--p = digit;
x /= 10;
}
if (negative)
*--p = '-';
puts(p);
return 0;
}
Допустишь один UB - ничто уже не спасёт твою прогу...
http://ideone.com/EFGoBi
−1
#include <iostream>
using namespace std;
auto print(auto arg)
{
return (cout<<arg);
//return cout;
}
auto print(auto arg, auto... args)
{
return (print(args...)<<arg);
//return cout;
}
int main() {
print(1,"ko")<<"ok";
return 0;
}
https://ideone.com/YvoHi3
ГЦЦ так и не научился в возвращаемые значения с авто
0
float massiv[2];
massiv[0] = 1.05;
massiv[1] = 2;
float summa;
for(int i = 0; i < 2; i++)
{
summa = summa + massiv[i];
}
ShowMessage(summa);
VS
float massiv[2];
massiv[0] = 1.05;
massiv[1] = 2;
float summa = massiv[0] + massiv[1];
ShowMessage(summa);
Бывают же люди...
не люблю вообще наговаривать на людей, но тут уж п..здец полный.
не знаю - не сдержался, а может сегодня звезды не так стали.
дали мне на сопровождение код, но это еще полбеды...
вообщем суть вопроса - человеку дали (по всей видимости)
задачу найти сумму двух чисел. вот что он написал: (см. в коде)
Это вместо: (см. ниже в коде под надписью VERSUS)
И так все 100 000 строк кода.
Как говорится программист от Б-г-а. Под Б-г я имею ввиду Бориса Гребенщикова.
(Не знаю как кто, а я лично не перевариваю его музыку)
P.S. Автор сего произведения сейчас работает помощником директора. Чего-то я
наверное не понимаю в этой жизни.
P.P.S. Все совпадения с реальными людьми и событиями случайны. Говорю потому
что страшно - еще уволят.
+4
#define RandomNumbers_count 16
static unsigned char RandomNumbers[] =
{
7, 167, 203, 54,
32, 78, 164, 112,
237, 182, 75, 96,
135, 13, 42, 27
};
static unsigned char CurrUrandPos = 0;
void getURandom(void *buf, size_t size)
{
if (size == 0)
return;
for (size_t i = 0; i < size; i++)
{
((char*)buf)[i] = RandomNumbers[CurrUrandPos];
CurrUrandPos = (CurrUrandPos + 1) % RandomNumbers_count;
}
}
Генератор псевдослучайных чисел: избавляемся от платформозависимого кода.
0
#define EncryptAES256(sched) \
"pxor (%["#sched"]), %%xmm0 \n" \
"aesenc 16(%["#sched"]), %%xmm0 \n" \
"aesenc 32(%["#sched"]), %%xmm0 \n" \
"aesenc 48(%["#sched"]), %%xmm0 \n" \
"aesenc 64(%["#sched"]), %%xmm0 \n" \
"aesenc 80(%["#sched"]), %%xmm0 \n" \
"aesenc 96(%["#sched"]), %%xmm0 \n" \
"aesenc 112(%["#sched"]), %%xmm0 \n" \
"aesenc 128(%["#sched"]), %%xmm0 \n" \
"aesenc 144(%["#sched"]), %%xmm0 \n" \
"aesenc 160(%["#sched"]), %%xmm0 \n" \
"aesenc 176(%["#sched"]), %%xmm0 \n" \
"aesenc 192(%["#sched"]), %%xmm0 \n" \
"aesenc 208(%["#sched"]), %%xmm0 \n" \
"aesenclast 224(%["#sched"]), %%xmm0 \n"
void ECBEncryptionAESNI::Encrypt (const ChipherBlock * in, ChipherBlock * out)
{
__asm__
(
"movups (%[in]), %%xmm0 \n"
EncryptAES256(sched)
"movups %%xmm0, (%[out]) \n"
: : [sched]"r"(GetKeySchedule ()), [in]"r"(in), [out]"r"(out) : "%xmm0", "memory"
);
}
https://github.com/PurpleI2P/i2pd/blob/openssl/Crypto.cpp принципиально новый подход - определять дефайном какое-то макроговно, чтобы потом его использовать внутри асмовставок
0
QGeoTiledMap *map = new QGeoTiledMap(this,nullptr);
QGeoMapController *controller = map->mapController();
qDebug() << rotation << controller->bearing(); // 30 0
controller->setBearing(rotation);
qDebug() << controller->bearing(); // 0
return map;
because fuck you that's why
+3
class ResourcePack
{
MultipleLinearMaps<string, Texture, Mesh, Model3D, VideoBuffer, Shader, ShaderObj, Framebuffer,
Effect, PostEffect, Sampler, VertexLayout, StructureType, ParameterBlock,
ShaderTemplate, ShaderModuleTemplate, ShaderModule, ShaderModuleType,
ShaderGenerator, ShaderLibrary, ImageFunction> maps;
//...
};
Наконец-то я осилил variadic templates!