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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2015, 17:01   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию аномальная строка

столкнулся с такой проблемкой.

зачем в коде прописали op = 0; когда есть уже op = *token; ?

без этого фрагмента программа начинает косячить.


........................

Код:
void fun_5(double &result) 
{ 
char op; 
op = 0; 
if (*token == '+' || *token == '-') 
{ 
op = *token; 
leksem(); 
} 
numb(result); 
if (op == '-') result = -result; 
}
RAFA91 вне форума Ответить с цитированием
Старый 27.01.2015, 17:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что такое "инициализация переменных" и для чего она нужна знаешь?
Вот прокрути в воображении как программа должна себя вести с нулем и без нуля.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2015, 13:46   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

дело в том, что она нормально работает при загрузке в переменную op любого символа.

немогу понять почему так.

присвоение значения op идет же в условии.
RAFA91 вне форума Ответить с цитированием
Старый 28.01.2015, 14:00   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
присвоение значения op идет же в условии.
А если условие не выполнено?
waleri вне форума Ответить с цитированием
Старый 28.01.2015, 15:04   #5
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

условие

if (*token == '+' || *token == '-')


выполняется всегда.

....................

говорю же - при загрузке в op любого символа программа не косячит.

если же я до условия не присвою op какого-то левого симвоа - то идут глюки.
RAFA91 вне форума Ответить с цитированием
Старый 28.01.2015, 15:12   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
выполняется всегда.
Да ладно
Я бы не надеялся на "всегда".
В любом случае поищи в интернете статьи "почему нужно инициализировать переменные". И почитай. Там тебе будут и перспективы и подводные камни расписаны.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2015, 15:46   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Аномалия какая-то. Возможно всё, вплоть до корявого оптимизатора корявого компилятора
pu4koff вне форума Ответить с цитированием
Старый 28.01.2015, 16:15   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
дело в том, что она нормально работает при загрузке в переменную op любого символа.

немогу понять почему так.
Потому что op оказывает влияние на результат только если в op запишем '-'. Во всех остальных случаях op реально не нужен.
Вот вставьте вместо op = 0;
op = '-';

А потом пусть token будет "123" и посмотрите на результат.
waleri вне форума Ответить с цитированием
Старый 28.01.2015, 17:19   #9
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

мой компидятор борланд с++

...............

почему в таком случае все нормаьно ?


Код:

void fun_5(double &result)

{

	char op;

	if ((op=(*token)) == '+' || op == '-')

	{

		
		leksem();

	}

	fun_6(result);

	if (op == '-') result = - result;

}
а в таком нет

Код:


void fun_5(double &result)  // Функция меняет знак на противоположный.

{ 

char op; 



if (*token == '+' || *token == '-') 

{ 

op = *token; 

leksem(); 

} 

fun_6(result); 

if (op == '-') result = -result; 

}

Последний раз редактировалось RAFA91; 28.01.2015 в 17:25.
RAFA91 вне форума Ответить с цитированием
Старый 28.01.2015, 17:38   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

А должен чего делать? По правилам математики по умолчанию у чисел +, а поставили -
pu4koff вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# строка Nickolai47 C# (си шарп) 3 16.06.2013 17:23
строка string и строка char Petyu Общие вопросы C/C++ 3 16.05.2013 00:26
Строка в C# kloffelin Помощь студентам 0 08.10.2010 00:01
строка D_E_N Общие вопросы Delphi 2 03.01.2010 21:44
Строка состаяния или загрузачная строка Sergeu Мультимедиа в Delphi 8 27.08.2008 10:32