Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Модификатор unsigned




Типы int, short и long представляют целые числа со знаком. Для типа char стандарт Си не устанавливает явно наличие знака, однако большинство компиляторов трактуют элементы типа char как целые числа со знаком в диапазоне от -128 до 127. Если необходимо трактовать целые числа как неотрицательные, или беззнаковые, следует добавить модификатор unsigned при описании переменных. Примеры:

unsigned char c = 255;unsigned short s = 65535;unsigned int i = 1000000000;unsigned j = 1;

При описании типа " unsigned int " слово " int " можно опускать, что и сделано в последнем примере.

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

Имеется также модификатор signed (знаковый). Его имеет смысл использовать на тех платформах, в которых тип char является беззнаковым. Пример описания:

signed char d = (-1);

Вещественные типы

Вещественных типов два: длинное вещественное число double (переводится как "двойная точность") и короткое вещественное число float (переводится как "плавающее"). Вещественные типы были подробно рассмотрены в разделе 1.4.2. Вещественное число типа double занимает 8 байтов, типа float - 4 байта.

Тип double является основным для компьютера. Тип float - это, скорее, атавизм, оставшийся от ранних версий языка Си. Компьютер умеет производить арифметические действия только с элементами типа double, элементы типа float приходится сначала преобразовывать к double. Точность, которую обеспечивает тип float, низка и не достаточна для большинства практических задач. Все стандартные функции математической библиотеки работают только с типом double. Рекомендуем вам никогда не использовать тип float!

Примеры описаний вещественных переменных:

double x, y, z;double a = 1.5, b = 1e+6, c = 1.5e-3;

В последних двух случаях использовалось задание вещественных констант в экспоненциальной форме (см. раздел 1.4.2).

Логический тип

В языке Си специального логического типа нет, вместо него используются переменные целого типа. Значению "истина" соответствует любое ненулевое целое число, значению "ложь" - ноль. Например, в Си допустим такой фрагмент программы:

intb;doubles;...if (b) {s = 1.0;}

Здесь целочисленная переменная b используется в качестве условного выражения в операторе if ("если"). Если значение b отлично от нуля, то выполняется тело оператора if, т.е. переменной s присваивается значение 1.0; если значение b равно нулю, то тело оператора if не выполняется.

На самом деле, приведенный пример представляет собой дурной стиль программирования. Гораздо яснее выглядит следующий фрагмент, эквивалентный приведенному выше:

if (b!= 0) { s = 1.0;}

В более строгом языке Java второй фрагмент корректен, а первый нет.

Язык C++ вводит логический тип bool в явном виде (отметим, что этот тип появился в C++ далеко не сразу!). Переменные типа bool принимают два значения:false и true (ложь и истина). Слова false и true являются ключевыми словами языка C++.

Примеры описания логических переменных в C++:

bool a, b;bool c = false, d = true;

Операции.

Операции. По количеству операндов, участвующих в операции, операции подразделяются на унарные, бинарные и тернарные.

В языке Си имеются следующие унарные операции:

- арифметическое отрицание (отрицание и дополнение);

~ побитовое логическое отрицание (дополнение);

! логическое отрицание;

* разадресация (косвенная адресация);

& вычисление адреса;

+ унарный плюс;

++ увеличение (инкремент);

-- уменьшение (декремент);

sizeof размер.

Унарные операции выполняются справа налево.

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

В отличие от унарных, бинарные операции, список которых приведен в табл.7, выполняются слева направо.

Таблица 7

Знак операции Операция Группа операций
* Умножение Мультипликативные
/ Деление
% Остаток от деления
+ Сложение Аддитивные
- Вычитание
<< Сдвиг влево Операции сдвига
>> Сдвиг вправо
< Меньше Операции отношения
<= Меньше или равно
>= Больше или равно
== Равно
!= Не равно
& Поразрядное И Поразрядные операции
| Поразрядное ИЛИ
^ Поразрядное исключающее ИЛИ
&& Логическое И Логические операции
|| Логическое ИЛИ
, Последовательное вычисление Последовательного вычисления
= Присваивание Операции присваивания
*= Умножение с присваиванием
/= Деление с присваиванием
%= Остаток от деления с присваиванием
-= Вычитание с присваиванием
+= Сложение с присваиванием
<<= Сдвиг влево с присваиванием
>>= Сдвиг вправо присваиванием
&= Поразрядное И с присваиванием
|= Поразрядное ИЛИ с присваиванием
^= Поразрядное исключающее ИЛИ с присваиванием

Левый операнд операции присваивания должен быть выражением, ссылающимся на область памяти (но не объектом объявленным с ключевым словом const), такие выражения называются леводопустимыми к ним относятся:

- идентификаторы данных целого и плавающего типов, типов указателя, структуры, объединения;

- индексные выражения, исключая выражения имеющие тип массива или функции;

- выражения выбора элемента (->) и (.), если выбранный элемент является леводопустимым;

- выражения унарной операции разадресации (*), за исключением выражений, ссылающихся на массив или функцию;

- выражение приведения типа если результирующий тип не превышает размера первоначального типа.

При записи выражений следует помнить, что символы (*), (&), (!), (+) могут\ обозначать унарную или бинарную операцию.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных