#c #c -cli
#c #c -cli
Вопрос:
Я пытаюсь запрограммировать систему, в которой пользователь может выбирать, вводить ли ему дату в виде дня, месяца или года с помощью поля со списком. Вот мой код:
double Years;
if (FinancialTermType->SelectedIndex == 0)
{
String ^ TermTextbox = Term->Text;
std::wstring TermString(TermTextbox->Data());
Years = std::stod(TermString);
}
else if (FinancialTermType->SelectedIndex == 1)
{
String ^ TermTextbox = Term->Text;
std::wstring TermString(TermTextbox->Data());
double month = std::stod(TermString);
Years = (month / 12);
}
else if (FinancialTermType->SelectedIndex == 2)
{
String ^ TermTextbox = Term->Text;
std::wstring TermString(TermTextbox->Data());
double day = std::stod(TermString);
Years = (day / 365);
}
но он предупреждает об этом warning C4701: potentially uninitialized local variable 'Years' used
. Спасибо
Комментарии:
1. Если
FinancialTermType->SelectedIndex
задано некоторое значение, отличное от 0, 1 или 2, то ни один из ваших if-тестов не пройдет иYears
никогда не будет инициализирован.2. Вам нужно либо присвоить начальное значение
Years
, либо добавитьelse
инструкцию3. @JeremyFriesner Есть 2 элемента (0-2).
4. @AirbusFan4444 если для
SelectedIndex
существует только 3 возможных значения, рассмотрите возможность использования вместо этого класса enum с описательными именами. Например,enum class InputKind { years, months, days };
ThenSelectedIndex
будет иметь типInputKind
5. Кроме того, вы можете исключить обычный код (который считывает двойное значение) и поместить его вне
if
s
Ответ №1:
Иметь начальное значение для лет, например Double Years = 0
при определении переменной.