Member 13648231 Ответов: 2

Используется неинициализированная локальная переменная tc ( ошибка)


struct dat
{
	int day;
int month;
		int year;
		int cday;
			int cmonth;
			int cyear;
};
void dob()
{
	dat d;

	cout << " enter date of birth";
	
		cout << endl;
	
		cout << " enter day";
		cin >> d.day;
		cout << endl;
		cout << " month";
		cin >>d.month;
		cout << endl;
		cout << "year";
		cin >> d.year;
		cout << endl;
		cout <<d. day << "-" << d.month << "-" <<d.year;
		cout << endl; cout << endl;
}
void cdob()
{
	dat cd;

	cout << " enter  current date ";

	cout << endl;

	cout << " enter day";
	cin >> cd.day;
	cout << endl;
	cout << " month";
	cin >> cd.month;
	cout << endl;
	cout << "year";
	cin >> cd.year;
	cout << endl;
	cout << cd.day << "-" << cd.month << "-" << cd.year;
	cout << endl; cout << endl;
}
void tdob()
{
	dat tc;
	int tyear;
		tyear = tc.cyear - tc.year-1;
		int  days;
		days = tc.day - tc.cday;
		int tmonth;
		tmonth = tc.month + tc.cmonth;
		cout << " year = " << tyear;
		cout << endl;
		cout << " total days" << days;
		cout << endl;
		cout << "total month" << tmonth;
		cout << endl;


}
void main()
{
	dob();
	cdob();
	tdob();
}


Что я уже пробовал:

void tdob()
{
	dat tc;
	int tyear;
		tyear = tc.cyear - tc.year-1;
		int  days;
		days = tc.day - tc.cday;
		int tmonth;
		tmonth = tc.month + tc.cmonth;
		cout << " year = " << tyear;
		cout << endl;
		cout << " total days" << days;
		cout << endl;
		cout << "total month" << tmonth;
		cout << endl;
}

Kornfeld Eliyahu Peter

Что тут непонятного?
У вас есть tc (в tdob), который никогда не получает значений, поэтому он имеет некоторый мусор в качестве значения, но вы все равно используете его, поэтому вы получаете предупреждение (C4700), но вы работаете с предупреждениями как ошибками, поэтому это оказывается ошибкой...

2 Ответов

Рейтинг:
0

OriginalGriff

Сообщение об ошибке очень явное:

Uninitialized local variable tc used

Быстрый взгляд на ваш код подтверждает это:
dat tc;
int tyear;
    tyear = tc.cyear - tc.year-1;
Вы заявляете: tc в первой строке вы используете его в третьей - но никогда не придаете ему значения.
Я подозреваю, что то, что вы хотите сделать, это иметь dob верните значение, введенное пользователем, а затем передайте его cdob в качестве параметра (возможно, заменяющего cd, и то же самое для tdob - но это же твой код, так что ты должен это знать, а не я!


Рейтинг:
0

Patrice T

Цитата:
Используется неинициализированная локальная переменная tc ( ошибка)

Это означает, что вы делаете что-то с помощью tc но его значение является случайным/неизвестным, потому что вы не устанавливали его раньше.