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 ..в чем я не прав? где ошибка?

Исправь
var a:real;
и всё неожиданно чудесным образом заработает 😉 😉

На Паскале при делении переменная, получающая результат, должна быть типа real

UPD: при нецелочисленном делении (/). При целочисленном (div) возможен integer

"( 32/2*8 ) придерживаюсь что вначале идет умножение а затем деление. " Неверно, идёт всё по очереди, сначала деление, а потом умножение, ведь 2*8 не выделено в отдельные скобки, и ответ будет 132, но паскаль считает вот это выражение a:= (2+4/2) + (32/2*8); типом real.

типы не совпадают. я точно хз как в паскале, но на си переменная а должна быть флоат или дабл. то есть переменной с плавающей точкой