- •Вопрос№3 Объединения Тип данных, позволяющий нескольким переменным различных типов занимать одну область памяти. Объявление объединения производится с помощью слова union аналогично структуре:
- •Вопрос№4 Тип перечисления
- •Вопрос№6Совместимость и преобразование типов данных
- •6.10.1 Основные понятия совместимости типов
- •Вопрос№9 Передача данных в параметрах по значению
- •Вопрос№10 Передача данных в параметрах по ссылке
- •Вопрос№11 Параметры по умолчанию
- •Вопрос№12 Параметры функции main
- •Вопрос№13 Параметры-массивы и параметры-структуры
- •Вопрос№23 Множественное наследование
Вопрос№6Совместимость и преобразование типов данных
6.10.1 Основные понятия совместимости типов
Различают следующие понятия при сравнении различных типов данных:
тождественность типов данных двух переменных означает, что две переменные используют один идентификатор типа данных;
совместимость двух типов данных означает, что вместо переменной одного типа данных можно использовать переменную второго типа данных без потери информации;
совместимость по присваиванию (A=B) двух типов данных (typeА A и typeB B) означает, что при операции присваивания переменной A можно передать значение переменной B без потери или искажения данных.
описание нового имени для существующего типа с использованием префикса typedef, которое при этом не приводит к созданию нового типа. Формат описания нового имени типа:
typedef имя_типа новое_имя_типа;
. В языках С и С++ это можно выполнить тремя способами:
с помощью операций неявного преобразования типов в выражениях;
с помощью явного приведения типа;
с помощью переменных, хранящих данные в одной области памяти (например, объединений или указателей).
. Правила неявного преобразования:
1) типы char и int могут свободно смешиваться в арифметических выражениях: переменная типа char автоматически преобразуется в int;
2) выражения отношения и логические выражения, связанные операциями && и ||, по определению имеют значение 1, если они истинны, и 0, если они ложны;
3) к арифметической операции применяется следующая последовательность правил преобразования:
типы char и short преобразуются в int, а float в double;
если один из операндов имеет тип double, то другой преобразуется в double и результат имеет тип double;
если один из операндов имеет тип long, то другой преобразуется в long и результат имеет тип long;
если один из операндов имеет тип unsigned, то другой преобразуется в unsigned и результат имеет тип unsigned;
4) все переменные типа float в выражениях преобразуются в double − вся вещественная арифметика выполняется с двойной точностью.
ВОПРОС№7С увеличением объемов программ возникла необходимость в представлении программы в виде иерархии относительно обособленных фрагментов. Была разработана технология структурного программирования. При этом вся программа представляет собой последовательность вызовов отдельных подпрограмм. Это дает следующие преимущества:
сокращение объема программ за счет однократного описания повторяющихся частей программ;
повышение наглядности программ, и как следствие упрощение процесса создания программ;
сокращение времени на отладку и верификацию программ.
В языках программирования получили распространение два типа подпрограмм:
подпрограммы-процедуры, которые предназначены для выполнения определенной относительно обособленной системы операций;
подпрограммы-функции, реализуют вычислительный алгоритм расчета конкретного значения.
При написании подпрограмм соблюдаются следующие правила видимости имен:
имя локального компонента подпрограммы (констант, переменных и т.п.) должно быть уникальным по отношению ко всей программе;
в подпрограмме известны все компоненты, описанные выше по структуре дерева иерархии программы (если объявить переменную в разделе описания головной программы, то она доступна во всех подпрограммах, а если в подпрограмме, то в самой подпрограмме и вложенных в нее локальных подпрограммах);
если имя локального компонента совпадает с глобальным компонентом, то в операторной части подпрограммы одноименный глобальный элемент становится недоступным.
ВОПРОС№8 Функция – это программный модуль, блок, единица из которых строится вся программа языка С. Функция выполняет какую-либо конкретную задачу. Функция начинается с ключевого слова, определяющее, тип данных, имеет имя, определяющее осмысленную функциональность( по этому имени будет осуществляться вызов из другой функции ), в скобках описывается перечень аргументов с определенным типом данных, разделенных запятыми и фигурные скобки, являющиеся телом функции: тип данных имя( аргумент имя_1, аргуметн имя_2, . . . , аргумент имя_n ) { /* тело функции */ } например: void outStrDisplay( int adressStr, char *dataStr ); { /* список операторов и вызовов функций */ } В конце функции точка с запятой не ставится, за исключением объявления прототипа функции: тип данных имя( аргумент имя_1, аргуметн имя_2, . . . , аргумент имя_n ); например: unsigned char stateModule( unsigned char mode, unsigned char value, . . . );