Мегаобучалка Главная | О нас | Обратная связь


Размеры объектов данных (бит)



2019-12-29 227 Обсуждений (0)
Размеры объектов данных (бит) 0.00 из 5.00 0 оценок




Объекты данных HONEYWELL IBM INTERDATA INTEL Pentium-IV
char 8-бит 9-бит 8-бит 8-бит
int 16 36 32 32
short 16 36 16 16
long 32 36 32 32
float 32 36 32 32
double 64 72 64 64

 

Цель состоит в том, чтобы short и long давали возможность в зависимости от практических нужд использовать различные длины целых; тип int отражает наиболее «естественный» размер разрядной сетки конкретной машины. Как вы видите, каждый компилятор свободно интерпретирует short и long в соответствии со своими аппаратными средствами. Все, на что вы можете твердо полагаться, это то, что short не длиннее, чем long.

 


Константы

 

Константы типа int и float мы уже рассмотрели. Отметим еще только, что как обычная 123.456е–7, так и «научная» запись 0.12е3 для float является законной.

Каждая константа с плавающей точкой считается имеющей тип double, так что обозначение «е» служит как для float, так и для double.

Длинные константы записываются в виде 123l (от англ. long). Обычная целая константа, которая слишком длинна для типа int, рассматривается как long.

Существует система обозначений для восьмеричных и шестнадцатеричных констант: лидирующий 0 (нуль) в константе типа int указывает на восьмеричную константу, а стоящие впереди 0x соответствуют шестнадцатеричной константе. Например, десятичное число 31 можно записать как 037 в восьмеричной форме и как 0x1f в шестнадцатеричной. Шестнадцатеричные и восьмеричные константы могут также заканчиваться буквой l, что делает их относящимися к типу long.

 

3.3.1. Символьная константа. Символьная константа – это один символ, заключенный в одинарные кавычки, как, например, 'х'. Значением символьной константы является численное значение этого символа во внутреннем машинном наборе символов. Например, в наборе символов ASCII символьный нуль, или '0', имеет значение 48, а в коде EBCDIC – 240, и оба эти значения совершенно отличны от числа 0. Написание '0' вместо численного значения, такого как 48 или 240, делает программу не зависящей от конкретного численного представления этого символа в данной машине. Символьные константы точно так же участвуют в численных операциях, как и любые другие числа, хотя наиболее часто они используются в сравнении с другими символами. Правила преобразования будут изложены позднее.

Некоторые неграфические символы могут быть представлены как символьные константы с помощью эскайп-последовательностей, как, например, \n (новая строка). Хотя они выглядят как два символа, на самом деле являются одним. Кроме того, можно сгенерировать произвольную последовательность двоичных знаков размером в байт, если написать '\ooo', где ooo – от одной до трех восьмеричных цифр (0, 1,…,7), или '\xhh', где hhh – одна, две или более шестнадцатиричных цифр (0, 1, …, F).

Например, в коде ASCII:

 

#define vtab '013' // Вертикальная табуляция

#define bell '\017' // Звоночек

или в шестнадцатиричном виде:

 

#define vtab '\xb' // Вертикальная табуляция

#define bell '\x7' // Звоночек

 

    Полный набор эскайп-последовательностей таков:

 

Символ Значение Символ  
\a Сигнал “звоночек” \\ Обратная косая черта
\v Вертикальная табуляция /? Знак вопроса
\n Новая строка \' Ковычка
\f Перевод страницы \" Двойная ковычка
\r Возврат каретки \ooo Восьмеричный код
\t Горизонтальная табуляция \xhh Шестнадцатиричный код

 

Символьная константа '\0', изображающая символ со значением 0, часто записывается вместо целой константы 0 , чтобы подчеркнуть символьную природу некоторого выражения.

 

3.3.2. Константное выражение. Константное выражение – это выражение, состоящее из одних констант. Такие выражения обрабатываются во время компиляции, а не при прогоне программы, и соответственно могут быть использованы в любом месте, где можно использовать константу, как, например в

 

#define maxline 1000

char line[maxline+1];

 

или

 

seconds = 60 * 60 * hours;

 

3.3.3. Строчная константа. Строчная константа – это последовательность, состоящая из нуля или более символов, заключенных в двойные кавычки, как, например,

"I am a string" // Я - строка

или

""           // Null string – нулевая строка

 

Кавычки не являются частью строки, а служат только для ее ограничения. Те же самые условные последовательности, которые использовались в символьных константах, применяются и в строках; символ двойной кавычки изображается как \".

С технической точки зрения строка представляет собой массив, элементами которого являются отдельные символы. Чтобы программам было удобно определять конец строки, компилятор автоматически помещает в конец каждой строки нуль-символ \0. Такое представление означает, что не накладывается конкретного ограничения на то, какую длину может иметь строка, и чтобы определить эту длину, программы должны просматривать строку полностью. При этом для физического хранения строки требуется на одну ячейку памяти больше, чем число заключенных в кавычки символов.

Пример 3-1. Следующая функция strlen(s) вычисляет длину символьной строки s не считая конечный символ \0.

 

strlen(char s[]) // Возвращает длину строки

{

int i;

i = 0;

while (s[i] != '\0')

++i;

return(i);

}

 

Будьте внимательны и не путайте символьную константу со строкой, содержащей один символ: 'x' - это не то же самое, что "x". Первое – это отдельный символ, использованный с целью получения численного значения, соответствующего букве х в машинном наборе символов. Второе – символьная строка, состоящая из одного символа (буква х) и \0.

 

Описания

 

Все переменные должны быть описаны до их использования, хотя некоторые описания делаются неявно, по контексту. Описание состоит из спецификатора типа и следующего за ним списка переменных, имеющих этот тип, как, например, 

 

int lower, upper, step;

char c, line[1000];

 

Переменные можно распределять по описаниям любым образом; приведенные выше списки можно с тем же успехом записать в виде:

 

int lower;

int upper;

int step;

char c;

char line[1000];

Такая форма занимает больше места, но она удобна для добавления комментария к каждому описанию и для последующих модификаций.

Переменным могут быть присвоены начальные значения внутри их описания, хотя здесь имеются некоторые ограничения. Если за именем переменной следуют знак равенства и константа, то эта константа служит в качестве инициализатора, как, например, в

 

char backslash = '\\';

int i = 0;

float eps = 1.0e–5;

 

Если рассматриваемая переменная является внешней или статической, то инициализация проводится только один раз, согласно концепции до начала выполнения программы. Инициализируемым явно автоматическим переменным начальные значения присваиваются при каждом обращении к функции, в которой они описаны. Автоматические переменные, не инициализируемые явно, имеют неопределенные значения, (т.е. мусор). Внешние и статические переменные по умолчанию инициализируются нулем, но, тем не менее, их явная инициализация является признаком хорошего стиля.

Мы продолжим обсуждение вопросов инициализации, когда будем описывать новые типы данных.

 



2019-12-29 227 Обсуждений (0)
Размеры объектов данных (бит) 0.00 из 5.00 0 оценок









Обсуждение в статье: Размеры объектов данных (бит)

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (227)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)