Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2012, 23:21   #1
MasterSporta
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 56
По умолчанию switch

Приветствую всем форумчан. Возник вопрос следующего содержания.
Пишу код:
Код:
bool Convertor::precedence(char op1, char op2) const
{
	int priority1;
	int priority2;
	
	switch(op1)
	{
	case '*':
		priority1 = 1;
		break;

	case '/':
		priority1 = 1;
		break;

	case '+':
		priority1 = 0;
		break;

	case '-':
		priority1 = 0;
		break;
	}

	switch(op2)
	{
	case '*':
		priority2 = 1;
		break;

	case '/':
		priority2 = 1;
		break;

	case '+':
		priority2 = 0;
		break;

	case '-':
		priority2 = 0;
		break;	
	}

	if(priority1 >= priority2)
		return 1;
	else
		return 0;
}
Компилирует нормально. А вот во время выполнения следуюшая ошибка. Не инициализирована переменная priority1. Почему?
Всем спасибо!
MasterSporta вне форума Ответить с цитированием
Старый 25.03.2012, 23:55   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

видимо op1 не было */+- .
инициализируйте нулем, и подумайте о секции default свитчей.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.03.2012, 13:53   #3
geologg
 
Аватар для geologg
 
Регистрация: 27.01.2012
Сообщений: 9
По умолчанию

Попробуйте заменить символы /*-+ на их код и повозиться с типами op1, op2.
Подозреваю, что у вас проблема и с op2.
Выражение "разбить винчестер" не обещает Вам увидеть Вашего Админа, молотящего ружьем об дерево.
geologg вне форума Ответить с цитированием
Старый 26.03.2012, 14:16   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
/*-+ на их код
в С нет отличий от кода символа и самого символа.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.04.2012, 22:05   #5
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Цитата:
Сообщение от MasterSporta Посмотреть сообщение
if(priority1 >= priority2)
return 1;
else
return 0;
Здесь вы сравниваете priority1 и priority2. Вы не проинициализировали эти две переменные. Не факт, что в switch вы присвоите им значения. Поэтому проинициализируйте их нулём или в switch добавте default с присвоением значений этим переменным.
rmv240899 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ switch Pingvinenok_Lolo Помощь студентам 5 23.12.2011 18:44
C# switch Sna1L Помощь студентам 2 07.07.2011 15:00
switch G. J. Cezar Общие вопросы C/C++ 2 16.10.2010 14:06
switch ололошенько Общие вопросы C/C++ 24 30.09.2010 16:52
switch Dimarik Общие вопросы C/C++ 4 11.04.2010 15:56