КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Char, int, long, float, double, long double, ⇐ ПредыдущаяСтр 3 из 3 а также двух производных типов "указатель на указатель", соответственно, на типы char и double. Для вычисления размеров объектов применить к указанным типам данных операцию sizeof. Программу запустить дважды: в первом случае использовать модель памяти Small, во-втором случае — модель Large. В отчете результаты работы программы оформить в виде таблицы:
Адресная арифметика Хотя значения указателей (адреса) по-своему смыслу являются беззнаковыми целыми числами, это особый тип данных со своими правилами адресной арифметики. ЗАДАНИЕ 3 Написать программу, в которой определяются переменные типов char, int, double. Для каждой переменной программа выводит (в строку) ее адрес и значения выражений "адрес + 2" и "адрес – 1" (какой тип имеют эти значения?). В отчете результаты привести в виде таблицы с колонками
Полученные результаты пояснить. Замечание Вычисляемые здесь адресные выражения с практической точки зрения лишены смысла (адрес какого объекта мы получаем в результате вычислений?). Здесь эти выражения используются только для демонстрации правил адресной арифметики. Реальное применение адресной арифметики потребуется при выполнении второго пункта задания 4. Операция приведения типа Операция приведения типа является унарной. Она применяется к выражениям. Ее результат — значение операнда (выражения), преобразованное к заданному типу. Синтаксис операции приведения типа: (<тип_данных>) выражение. Выражение может иметь базовый или производный тип, в том числе и адресный. ЗАДАНИЕ 4 1. Какие результаты будут получены при выполнении следующего фрагмента программы и почему? int x=8, y=3; Float z1, z2; z1=x/y; z2=(float)x/y; printf("x/y=%f\n",z1); printf("(float)x/y=%f\n",z2); Написать программу, которая поочередно выводит в шестнадцатеричной форме значения байтов представления переменной ul unsigned long ul=0x77BBCCDD. Сообщения должны иметь вид "Байт ..., значение ..."). Для этого нужно: а) определить в программе указатель pUL соответствующего типа и присвоить ему адрес переменной ul (на сколько байт ссылается этот указатель при использовании среды BC++?); б) определить указатель на один байт (какой тип он должен иметь?) и, используя операцию приведения типа, инициализировать его адресом объекта ul;
|