#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);
//}