Совместимость типов учитывается при вычислении выражений и выполнении операторов присваивания. Несовместимость типов определяется на этапе компиляции программы; при этом выдается сообщение об ошибке. Если типы операндов выражения не одинаковы, но совместимы, производится преобразование типов для приведения их к одному допустимому типу. Во время вычисления выражений два типа операндов совместимы если:
- оба они одного типа;
- один операнд вещественный, другой - целый;
- один операнд является диапазоном типа второго операнда;
- оба операнда - диапазоны одного и того же базового типа;
- оба операнда - строки;
- один операнд типа строка, другой - символ.
Примеры программ.
1. Написать программу, которая находит частное двух целых чисел.
Program example1;
Var a,b:integer;
c:real;
begin
writeln(‘введите два числа ’);
readln(a,b);
c:=a/b;
writeln(‘c=’,c) end.
2. Написать программу, которая для заданного х вычисляет значение выражения: 
Program example2;
Var x,y: real;
begin
writeln(‘введите число ’);
readln(x)
y=sqr(sqr(x))+(x*sqr(x)+12*x)/2+sqrt(sqr(x)*x+10)+sin(x)/cos(x)
writeln(‘y=’,y);
end.
Для вывода вещественного результата можно использовать формат, как это было описано выше. Так, если мы хотим, чтобы результат выводился с точностью до двух знаков после запятой, нужно использовать следующий формат вывода: y:5:2. Тогда оператор вывода будет выглядеть следующим образом: writeln(‘y=’, y:5:2);
3. Найти остаток от деления двух целых чисел.
Program example3;
Var a,b,c:integer;
begin
writeln(‘введите два числа ’);
readln(a,b);
c:=a mod b;
writeln(‘c=’,c)
end.
Переменная c является переменной целого типа, так как тип результата операции mod – целый.