ВОРОТА | ВОРОТА КС 2021 | Набор 2 | Вопрос 40
Рассмотрим следующий сегмент кода ANSI C:
z=x + 3 + y->f1 + y->f2;
для (i = 0; i < 200; i = i + 2) { если (z > i)
{
р = р + х + 3;
q = q + y->f1;
} еще
{
р = р + у->f2;
д = д + х + 3;
}
}
Предположим, что переменная y указывает на структуру (размещенную в куче), содержащую два поля f1 и f2, а локальные переменные x, y, z, p, q и i являются выделенными регистрами. К коду применяется оптимизация устранения общих подвыражений (CSE). Количество операций сложения и разыменования (вида y -> f1 или y -> f2) в оптимизированном коде соответственно равно:
(А) 403 и 102
(Б) 203 и 2
(С) 303 и 102
(Г) 303 и 2
Ответ: (Д)
Объяснение: всего 300 сложений (для каждой итерации 3 операции сложения (p+c,q+a) или (p+b, q+c), (i+2)
с=х+3;
г=с+а+б
303 операции сложения и 2 операции разыменования (для y->f1, y->f2).
Тест на этот вопрос