Присвоение переменной C с помощью инструкции If

#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 }; Then SelectedIndex будет иметь тип InputKind

5. Кроме того, вы можете исключить обычный код (который считывает двойное значение) и поместить его вне if s

Ответ №1:

Иметь начальное значение для лет, например Double Years = 0 при определении переменной.