#include "stdio.h"
#include "stdlib.h"
Лучше это писать в угловых скобках.
double dr(double zb)
{
return zb = (rand() % 100) / (100 * 1.0);
}
Присваиваем параметру zb что-то, чтобы его похѣрить? Параметр будет жить до конца функции и НЕ ВЕРНЁТСЯ в вызвавшую программу (параметры передаются по копии).
Кстати, параметр zb ни на что не используется: что бы вы ни передали туда снаружи, подпрограмма в этот параметр не посмотрит.
printf("%lf", dr(double zb));
На G++ не скомпилировалось. Ну, написал dr(0), благо параметр не используется ни на что.
if (d == e)
{
printf("Win! your cash:%lf", winWay(a, b));
C:\TestApps\ErrUninitLocal\main.cpp|30|warning: 'd' may be used uninitialized in this function [-Wmaybe-uninitialized]|
А действительно, переменная d нигде никому не присваивается.
И ещё одно. Я не знаю, как действует Visual C, но модификатор l для формата %f нужен для scanf, но не нужен для printf. Вот так-то всё это дело устроено.
double a = winWay(a, b);
}
Что мы делаем? Присваиваем локальной переменной, чьё имя пересекается с более ранней переменной, чтобы её сразу же похѣрить? Она доживёт до ближайшей закрытой скобки.
C:\TestApps\ErrUninitLocal\main.cpp|33|warning: 'a' may be used uninitialized in this function [-Wmaybe-uninitialized]|
Тут вообще забавно работает.
double a
— считаем, что a определилась.
= winWay(a, b)
— считаем, что используется ОНА ЖЕ, а не более ранняя a. Естественно, неинициализированная.
(аналогично с loseway)
C:\TestApps\ErrUninitLocal\main.cpp|38|warning: 'a' may be used uninitialized in this function [-Wmaybe-uninitialized]|