В цикле for вторая часть i.e после 1-й точки с запятой выполняется проверка условия (скажем, i меньше n). Если мы удалим часть условия вообще, она переходит в бесконечный цикл, но здесь она показывает ошибку времени выполнения, а также если мы просто пишем exp [] без индекса i, она дает ошибку компилятора, так что здесь exp [i] и как проверка состояния?Проверка состояния inFor loop
int infixToPostfix(char* exp)
{
int i,k;
for (i = 0, k = -1; exp[i]; ++i)
....
....
}
int main()
{
char exp[] = "a+b*(c^d-e)^(f+g*h)-i";
infixToPostfix(exp);
return 0;
}
Таким образом, exp [i] оценивает либо 0, либо ненулевое значение. Под этим вы подразумеваете a, +, и все операторы и операнды не равны нулю, поэтому он запускается. В основном мы передаем exp для infixToPostfix, а символ «\ o» добавляется к нему, когда мы передаем по значению, является причина, по которой он заканчивается, когда он достигает конца? – Stack
@stack правый. Значение ascii с нулевым терминатором равно 0. –
Итак, в основном мы сравниваем значения ascii всех символов или, поскольку они являются символами, мы не преобразуем их в ascii, мы делаем это только для \ 0? Под этим я хочу сказать, передаю ли целое число a + b * 2 или что-то еще, тогда 2 будет преобразовано в ascii, и тогда условие будет проверено? – Stack