Шестнадцатеричные и восьмеричные литералы



В программировании иногда оказывается проще использовать не десятичную, а восьмеричную или шестнадцатеричную систему счисления.. Поэтому в С++ предусмотрена возможность задания констант в этих системах счисления. Шестнадцатеричный литерал должен начинаться с 0х (ноль за которым идёт буква х). Восьмеричный литерал начинается с нуля, например:

hex = 0xFF;      // Это составляет 255 в 10 с/с

oct = 011;          // Это составляет 9 в 10 с/с

Строковые литералы

Помимо литералов предопределённых типов, С++ поддерживает ещё один тип литералов: строку. Строка представляет собой последовательность символов, заключённую в двойные кавычки. Строки ранее использовались в программах в предложениях count. Однако есть важное обстоятельство: хотя С++ позволяет определять строковые константы, в нём нет встроенного типа строковых данных. Строки описываются в С++ как массивы символов.

Символьные Esc-последовательности

Из большинства отображаемых на экране символов можно образовывать символьные литералы, заключая их в одинарные кавычки, однако несколько символов, например, возврат кареткисоздают проблемы при работе в текстовом редакторе. Кроме того некоторые символы, например. Одиночные, двойные кавычки имеют в С++ определённое значение и их нельзя использовать в качестве символьных констант.

Для таких случаев в С++ предусмотрено специальное средство – управляющие или Esc - последовательности, которые иногда называют символьными константами с обратным слешем. Эти константы приведены в Таблице 2

Код Значение
\ b Шаг назад
\ f Перевод страницы
\ n Новая строка
\ r Возврат каретки
\ t Горизонтальная табуляция
\ ” Двойные кавычки
\ ’ Символ одиночной кавычки
\ \ Обратная косая черта, обратный слеш
\ v Вертикальная табуляция
\ a Звуковой сигнал
\ ? ?
\ N Константа в 8с/с (N сама восьмеричная константа)
\ xN Константа в 16с/с (N сама шестнадцатеричная константа)

Подробнее о переменных

Переменные объявляются с помощью предложения вида:

Тип  имя_переменной

Здесь тип – зто тип данного, соответствующий объявляемой переменной, а имя_переменной- еёимя, составленное по правилам для имён (начинается с буквы или с символа подчёркивания, не является ключевым словом языка, нет ограничений по длине). Объявление переменной в программе является обязательным и тип может быть любым из допустимых типов данных в С++. В языке недопустимо изменять тип переменной в течении времени её существования.

Инициализация переменных

Переменной можно присвоить значение одновременно с её объявлением. Это действие носит название инициализация и форма предложения инициализации выглядит так:

тип имя переменной = значение

значение – действительное значение переменной, присваемое одновременно с её созданием.

int count = 10;

char ch =’X’;

float f = 1.2F;

Возможно и такое написание предложения инициализации переменных:

int  a, b = 8, c = 19, d;                   //здесь инициализируются только переменные b, c.

Динамическая инициализация переменных

В предыдущих примерах для инициализации переменных использовались константы. Однако С++ позволяет инициализировать переменные динамически, с помощью любых выражений, образующих определённые значения в то время, когда объявляется инициализируемая переменная. Далее приведена программа, вычисляющая объём цилиндра при заданных значениях радиуса его основания и высоты.

// EX_INVAR.cpp: главный файл проекта.

 

// Демонстрация динамической инициализации

// Назовите этот файл EX_INVAR.cpp

#include "stdafx.h"

#include <iostream>

using namespace std;

// C++ программа начинает своё выполнение с функции main()

int main()

{

       setlocale (LC_ALL,"Russian");

       double radius = 4.0, hight = 5.0;

// динамически инициализируем переменную volume

       double volume = 3.1416 * radius * radius * hight;

       cout << "Объём цилиндра равен "<< volume ;

       cin.get();

}

 

Примечание.

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

Операторы

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

Арифметические операторы

В С++ определены следующие арифметические операторы

Оператор Значение
+ Сложение
- Вычитание (унарный минус)
* Умножение
/ Деление
% Деление по модулю
++ Инкремент
-- Декремент

 

Операторы +, -, *, / выполняют те же действия, что и в алгебре. Их можно применять к любым встроенным типам данных, в том числе и к переменным типа char.

Оператор % (деление по модулю) возвращает остаток от целочисленного деления. Когда знак / используется с целым числом, получаемый остаток отбрасывается. Для получения остатка в операции деления следует воспользоваться оператором % . Так, 10 % 3 равно 1. В С++ оператор % может использоваться только с целочисленными операндами; к типам с плавающей точкой он неприменим.

 

// EX_DEL.cpp: главный файл проекта.

 

// Демонстрация использования оператора %

// Назовите этот файл EX_DEL.cpp

#include "stdafx.h"

#include <iostream>

using namespace std;

// C++ программа начинает своё выполнение с функции main()

int main()

{

setlocale(LC_ALL, "Russian");

int x = 10, y = 3;

cout << x << " / " << y << " равно " << x / y <<

       " с остатком " << x % y << "\n";

x = 1;

y = 2;

cout << x << " / " << y << " равно " << x / y << "\n" <<

       x << " % " << y << " равно " << x % y;

return 0;

}

Результат работы программы:

Равно 3 с остатком 1

Равно 0

1 % 2 равно 1

Инкремент и декремент

Операторы инкремента и декремента обладают очень интересными свойствами , однако следует точно определить их действия. Оператор инкремента добавляет к операнду 1, а оператор декремента вычитает 1. Таким образом:

x = x + 1           эквивалентно            х ++

x = x - 1            эквивалентно            --х

Оба оператора могут как предшествовать операнду (префикс), так и следовать за ним (постфикс), например:

x = x + 1           может быть записано двояко

++х   // префиксная форма

х ++  // постфиксная форма

В этом примере безразлично, используется ли инкремент как префикс или как постфикс. Однако если инкремент или декремент используется как часть большего выражения, возникает важное различие. Если оператор инкремента или декремента предшествует операнду, С++ выполняет операцию до получения значения операнда с целью использования его в оставшейся части выражения. Если же оператор следует за операндом, С++ сначала получит значение операнда, а лишь затем выполнит его инкремент или декремент, например:

x = 10;

y = ++x;                    //y –получит значение 11

если записать иначе

x = 10;

y = x++;                    //y –получит значение 10

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

Относительные приоритеты арифметических операторов приведены в таблице.


Дата добавления: 2019-07-15; просмотров: 228; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!