Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Три модификатора near, far и huge влияют на работу операции косвенной ссылки (*); другими словами, они модифицируют размер указателей на объекты данных. Указатель near имеет длину 2 байта, указатель far — 4 байта, указатель huge — также 4 байта. Отличие указателей far и huge заключается в том, что указатель huge работает с формой адреса. Эта концепция детально описана в дальнейшем.
6.5.7. Тип данных char
Этот тип определяет целые числа без знака в диапазоне от 0 до 255. Обычно такое целое размещается в одном байте памяти.
char response;
char intable, latan;
char isma = 'S';
Символьные константы. В языке Си символы заключаются в апострофы. Поэтому, когда мы присваиваем какое-то значение переменной broiled типа char, мы должны писать
broiled = 'T'; /*ПРАВИЛЬНО*/
а не
broiled = Т; /*НЕПРАВИЛЬНО*/
Если апострофы опущены, компилятор «считает», что мы используем переменную с именем Т, которую забыли описать.
6.5.8. Другие типы и размеры данных.
В языке Си имеются и другие типы данных, построенные с использованием основных типов. Они включают в себя массивы, указатели, структуры и объединения. (Указатели используются функцией scanf(); признаком этого в данном случае служит префикс &.)
Размеры данных. Приведем таблицу размеров данных для некоторых распространенных вычислительных систем.
Размер слова | DEC PDP-11 | DEC VAX | Interdata | IBM PC |
16 бит | 32 бита | 32 бита | 16 бит | |
char | ||||
int | ||||
short | ||||
long | ||||
float | ||||
double | ||||
Диапазон порядка(double) | ±38 | ±38 | ±76 | -307 - 308 |
При инициализации переменной следите за тем, чтобы тип константы соответствовал типу переменной.
int apples = 3; /*ПРАВИЛЬНО*/
int oranges = 3.0; /*НЕПРАВИЛЬНО*/
Язык Си «рассматривает» такие несоответствия менее жестко, чем, скажем, Паскаль, но в любом случае лучше учиться избегать дурных привычек.
6.6. Преобразование типов данных.
Предположим, что выполняется следующая операция, в которой переменные fresult и fvalue имеют тип float, а переменная ivalue — тип int:
fresult = fvalue * ivalue;
Следовательно, это операция смешанного типа. При выполнении оператора значение ivalue будет преобразовано в число с плавающей точкой, а затем выполнится умножение. Компилятор распознает смешанные операции и генерирует код для выполнения следующих операций.
Давайте посмотрим, что происходит при преобразовании типа float в тип int. Предположим, что описаны переменные ivalue1 и ivalue2 типа int и переменные fvalue и fresult типа float. Рассмотрим следующую последовательность операторов:
Ivalue1 = 3;
ivalue2 = 4;
fvalue = 7.0;
fresult = fvalue + ivalue1/ivalue2;
Операция ivalue1/ivalue2 — не смешанная; она представляет собой деление двух целых чисел, и ее результат 0, так как при выполнении целочисленного деления дробная часть (в этом примере 0.75) отбрасывается. Поэтому значение fresult равно 7.0.
Что будет, если переменную ivalue2 описать как float? В этом случае переменная fresult получит значение с плавающей точкой 7.75, поскольку операция ivalue1/ivalue2 будет иметь смешанный тип. Тогда значение ivalue1 временно преобразуется в число с плавающей точкой 3.0 и результат деления будет равен 0.75. После сложения с fvalue получим 7.75.
6.6.1. Явные преобразования типов при помощи операции приведения типа.
Как вы видели, компилятор С и C++ автоматически меняет формат переменной при выполнении смешанных операций, в которых задействуются различные типы данных. Однако, в некоторых случаях, несмотря на то, что автоматическое преобразование не выполняется, преобразование типов было бы желательным. В таких случаях необходимо особо указать, что требуется изменение типа. Кроме того, подобные явные указания облегчают другим программистам понимание используемых операторов. В языке С имеется несколько процедур, позволяющих указывать необходимость преобразования типа.
Одна из таких процедур называется приведением типа. Если нужно временно изменить формат некоторой переменной, достаточно перед ее именем указать в скобках имя типа, который необходимо получить. Например: если переменные ivalue1 и ivalue2 объявлены как int, а переменные fvalue и fresult как float, то три следующих оператора будут эквивалентны:
fresult = fvalue + (float)ivalue1/ivalue2;
fresult = fvalue + ivalue1/(float)ivalue2;
fresult = fvalue + (float)ivalue1/(float)ivalue2;
Все три оператора выполняют преобразование в тип с плавающей точкой и деление переменных ivalue1 и ivalue2. Если любая из этих переменных приведена в тип float, то — согласно описанным выше правилам стандартного преобразования типов в смешанных арифметических операциях — выполняется деление чисел с плавающей точкой. Третий оператор явно указывает, какие операции должны выполняться.
7. Символьные строки.
7.1. Символьные строки.
7.2. Длина строки — функция strlen().
7.3. Функции printf() и scanf().
Дата публикования: 2015-01-13; Прочитано: 927 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!