Допустим ли следующий оператор присваивания? Если да, то напишите тип и итоговое значение переменной y, если нет, то напишите, почему y:= round(y*(7 div 4) mod 7/3)/y - Trunc(0.724)

Допустим ли следующий оператор присваивания? Если да, то напишите тип и итоговое значение переменной y, если нет, то напишите, почему y:= round(y*(7 div 4) mod 7/3)/y - Trunc(0.724)
Гость
Ответ(ы) на вопрос:
Гость
Разберем оператор по шагам. Обозначим Т - промежуточный результат операции. y:= round(y*(7 div 4) mod 7/3)/y - trunc(0.724); 1) T:= 7 div 4 ⇒ T:=1, тип T целочисленный. 2) T:=y*T, тип Т определяется типом y. 3) T:=T mod 7, в операции mod операнды могут быть только целочисленными, следовательно, тип у в 2) может быть только целочисленным, иначе мы получим на данном шаге ошибку. Результат операции - Т целочисленного типа. 4) T:=T/3; T - вещественного типа. 5) T;=round(T); T - целочисленного типа. 6) T:=T/y, T - вещественного типа. 7) Trunc(0.724) вернет 0 целочисленного типа. 8) Т:=T-0 не изменит значения и типа Т: Т по-прежнему остается вещественным. 9) y:=T; для корректного присваивания y должен иметь вещественный тип, но это, как указано в 3), вызовет ошибку при выполнении 2). Итог: оператор недопустим и будет отмечен ошибочным при компиляции.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы