Ошибка переопределения C

#c #function #pass-by-value #redefinition

#c #функция #передача по значению #переопределение

Вопрос:

У меня возникли проблемы с той частью, где мне нужно распечатать день. Я попытался создать вторую переменную, но она не работает. В основном я беру пользовательский ввод для их дня рождения. Затем я пытаюсь вызвать эту функцию, которая определяет день рождения (она определяет число, представляющее день). Затем я пытаюсь отправить это число функции, которая принимает число и печатает день рождения в словах. Теперь я получаю сообщение об ошибке переопределения ‘int day2’.

Вот мой код:

 void determineDayOfBirth() {

    int day;
    int month;
    int year;
    char backslash;
    char backslash2;

    cout << "Enter your date of birth" << endl;
    cout << "format: month / day / year -->" << endl;
    cin >> month >> backslash >> day >> backslash2 >> year;

    if (isValidDate(month, day, year)) {
        int day2;
        cout << "You were born on a: ";
        int day2 = determineDay(month, day, year);
        printDayOfBirth(day2); 
        cout << endl;
        cout << "Have a great birthday!!!";
    }
    else {
        cout << "Invalid date";
    }
    return;
}
  

Комментарии:

1. Как еще компилятор должен сообщить вам, что вы переопределили day2 ? . Пожалуйста, проверьте свой код еще раз, вы увидите два объявления int day2 . Вы просто используете имя при назначении. Нет необходимости во втором объявлении типа int .

Ответ №1:

Удалите int из второго назначения, вы не можете определить переменную дважды в одном и том же блоке.

Чтобы исправить ваш код, замените:

 int day2;
cout << "You were born on a: ";
int day2 = determineDay(month, day, year);
  

С:

 cout << "You were born on a: ";
int day2 = determineDay(month, day, year);
  

Ответ №2:

Вы ввели два раза «int day2», что действительно является переопределением. Вы должны определить «day2» только один раз:

 if (isValidDate(month, day, year)) {
    int day2;
    cout << "You were born on a: ";
    day2 = determineDay(month, day, year); // REMOVE "int"
    printDayOfBirth(day2); 
    cout << endl;
    cout << "Have a great birthday!!!";
}
else {
    cout << "Invalid date";
}
return;
  

Ответ №3:

Причиной проблемы является

     int day2;
    cout << "You were born on a: ";
    int day2 = determineDay(month, day, year);
  

Второе — это переопределение day2 .

Удалите int ключевое слово из этой строки, и оно станет простым назначением.

Ответ №4:

вы не можете объявить две переменные в одной и той же области, поэтому day2 объявляется дважды в вашем блоке if. вы можете напрямую написать:

 //if(){
     int day2 = determineDay(month, day, year);
//}