Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Модификаторы near, far и huge



Три модификатора 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...