type mismatch (Pascal)
начал недавно изучать Паскаль
написал такую программку для тренировки
program abvgd;
var a:integer;
Begin
//присваиваю переменной а результат выражения
a:= (2+4/2) + (32/2*8);
writeln('resultat=', a);
readln
END.
а вопрос заключается в том что когда компилирую программу выдает ошибку type mismatch ( что это значит я понимаю, переменной присваивается значение которое не является типом integer) но или я не правильно считаю, или я не правильно использую последовательность операций паскаля тоесть деление первым или умножение в скобках... ведь 2+4/2 это 4 делим на 2 и затем прибавляем 2, далее выситываются вторые скобочки ( 32/2*8 ) придерживаюсь что вначале идет умножение а затем деление.. 2 производим на 8 = 16 и 32 на 16= 2, 2+4 = 6 тоесть на экран выведется значение переменной a как 6 ..в чем я не прав? где ошибка?
спасибо всем за ответы я разобрался
лучший овтет третий, очень помог
да я понял что если выражение в скобках (32/2*8) здесь нет разницы, операторы деления и умножения в одной иерархической ветке поэтому выполняются последоватетельно по порядку слева на право .
но я сделал немного по другому
описал еще 1 переменную целого типа и в теле программы дописал директиву - b:= trunc (a);
writeln ('resultat=', b);