Задачи по языку С

         

Классы памяти 4.1


int i=1; i.0=1
main { auto int i, j;
i.1=reset(); extern int i; Описание extern сообщает транслятору, что i - внешняя переменная, определенная где-то в другом месте, вероятно, в другом файле. Здесь i относится к i.0.
reset() {
return (i.0); i.0 - внешняя переменная i, которая используется в reset.
} i.1=1
for(j.1=1; j.1<3; j.1++) { PRINT2(d,i.1,j.1); PRINT1(d,next(i.1)); j.1=1
static int i=10; Второй файл программы начинается с определения внешней переменной i. Кажется, что это определение вступает в конфликт с описанием внешней переменной в первом файле. Однако служебное слово static говорит транслятору, что эта переменная известна только в текущем файле. Другими словами, она доступна только в функциях next, last и new. Мы будем обозначать эту переменную как i.n1n; i.n1n=10.
next() В описании функции next нет никаких параметров, поэтому значение, передаваемое main, игнорируется.
{
return(i.n1n+=1); } Переменная i.n1n=11 и next выдает 11.
PRINT1(d,last(i.1)); last() {
rerturn(i.n1n-=1); Переменная i.n1n=10 и last возвращает 10. В last используется то же i, которое ранее было увеличено функцией next.
PRINT1(d,new(i.1+j.1)); new(2)
((int i=2;)) i.new=2.
static int j=5; j.new=5.
return (i.new=j.new=5+2); j.new=7, i.new=7 и выдается 7. Переменная i.n1n не изменяется, i.new исчезает после возврата и j.new при новом обращении к new будет равно 7.
}
for(j.1=1; j.1<3; j.1++) { j.1=2.

Опишем в общих чертах действие каждого оператора в цикле.

PRINT2(d,i.1,j.1); Выполнение тела цикла приводит к увеличению j.1 на 1.
PRINT1(d,next(i.1)); Функция next увеличивает i.n1n и выдает получившееся значение.
PRINT1(d,last(i.1)); Функция last уменьшает i.n1n и выдает получившееся значение.
PRINT1(d,new(i.1+j.1)); Функция new прибавляет свой параметр к j.new и выдает получившуюся сумму.
} }




Содержание  Назад