Переменные в C ++
Переменная C ++ предоставляет нам возможность именованного хранилища. Это позволяет программисту манипулировать данными в соответствии с потребностями. Каждая переменная имеет тип в C ++. Тип переменной помогает определить размер и структуру карты памяти переменной, диапазон значений, которые могут быть сохранены в этой памяти, и набор операций, которые могут быть применены к ней.
В этом руководстве по C ++ вы узнаете:
- Переменные в C ++
- Основные типы переменных в C ++
- Правила объявления переменных в C ++
- Типы переменных данных C ++
- Имя переменной или идентификаторы
- Квалификатор Const в C ++
- Объем переменных в C ++
- Преобразование типа переменной
- Регистрировать переменные
- Последовательности побега
Основные типы переменных в C ++
Вот основные типы переменных C ++:
Инт:
Целое число - это числовой литерал (связанный с числами) без дробной или экспоненциальной части. Пример. 120, -90 и т. Д.
Двойной:
Это значение с плавающей запятой двойной точности. Пример: 11.22, 2.345.
Char:
Символьный литерал создается заключением одного символа в одинарные кавычки. Например: 'a', 'm', 'F', 'P', '}' и т. Д.
Плавать:
Литерал с плавающей запятой - это числовой литерал, имеющий либо дробную, либо экспоненциальную форму. Например: 1.3, 2.6
Строковые литералы:
Строковый литерал - это последовательность символов, заключенная в двойные кавычки. Например: «Как дела?»
Bool:
Он содержит логическое значение true или false.
Правила объявления переменных в C ++
Вот несколько общих правил присвоения имени переменной:
- Имя переменной C ++ может состоять только из букв, цифр и подчеркивания.
- Имя переменной C ++ не может начинаться с числа.
- Имена переменных не должны начинаться с заглавной буквы.
- Имя переменной, используемое в C ++, не может быть ключевым словом. Например, int - это ключевое слово, которое используется для обозначения целых чисел.
- Имя переменной C ++ может начинаться с подчеркивания. Однако это не считается хорошей практикой.
Типы переменных данных C ++
C ++ определяет целый набор примитивных типов
Тип void не имеет связанных значений и может использоваться только в некоторых случаях. Чаще всего это возвращаемый тип функций, которые не возвращают значение.
К арифметическим типам относятся символы, целые числа, логические значения и числа с плавающей запятой. Тип арифметики, если он разделен на 2 категории
- Типы с плавающей точкой . Тип с плавающей запятой (или плавающий) представляет собой десятичные числа. Стандарт IEEE определяет минимальное количество значащих цифр. Большинство компиляторов обычно обеспечивают большую точность, чем указанный минимум. Обычно числа с плавающей запятой представлены 32-битными числами, числами двойной точности - 64 битами, а числами длинных чисел - 96 или 128 битами.
- Целочисленные типы (включая символьные, целые и логические типы). Тип Boolean имеет только два типа значений: True или False. Существует несколько типов символов , большинство из которых поддерживает интернационализацию. Самый простой символьный тип - это char. Символ имеет тот же размер, что и один машинный байт, что означает один байт.
В Целые типы могут быть подписаны или без знака.
Знаковый тип : они представляют собой отрицательные или положительные числа (включая ноль). В типе со знаком диапазон должен быть равномерно разделен между значениями + ve и -ve. Таким образом, 8-битный знаковый символ будет содержать значения от -127 до 127.
Беззнаковый тип : в беззнаковом типе все значения> = 0. 8-битный беззнаковый символ может содержать от 0 до 255 (оба включительно).
Имя переменной или идентификаторы
Идентификаторы могут состоять из нескольких букв, цифр и символа подчеркивания или их комбинации. Ограничений на длину имени нет.
Идентификаторы должны
- начинаются с буквы или символа подчеркивания ('_').
- И чувствительны к регистру; прописные и строчные буквы различаются:
// определяет четыре разные переменные типа int
int guru99, gurU99, GuRu99, GURU99;
В языке C ++ зарезервировано несколько имен для его использования.
Существует множество общепринятых соглашений об именах переменных в разных языках программирования. Следование этим соглашениям может улучшить читаемость программы.
- Идентификатор должен давать хотя бы некоторое представление о его значении.
- Имена переменных обычно в нижнем регистре - guru99, а не Guru99 или GURU99.
- Определяемые нами классы обычно начинаются с заглавной буквы.
- Идентификаторы, содержащие несколько слов, должны визуально различать каждое слово. Например, guru99_website, а не guru99website.
Объявление и определение переменных C ++
Объявление переменной делает имя известным программе в той области видимости, в которой она определена. Пример:
int a=5;int b;char c='A';
int a,b;a=b=1000;
List initializationint a(5);int b{5};
Квалификатор Const в C ++
Предположим, есть переменная buffsize, в которой указано количество входных данных, которые должны быть получены от пользователя. Здесь мы не хотим изменять значение buffsize на протяжении всей программы. Мы хотим определить переменную, значение которой, как мы знаем, не должно изменяться.
В таком случае используйте ключевое слово const
const int bufSize = 512; // input buffer size
Это определяет bufSize как константу. Любая попытка назначить или изменить bufSize приводит к ошибке.
Здесь мы не можем изменить значение константного объекта после его создания, он должен быть обязательно объявлен и инициализирован. В противном случае компилятор выдает ошибку.
const int i = get_size(); // ok: initialized at run timeconst int j = 42; // ok: initialized at compile timeconst int k; // error: k is uninitialized constint i = 42;const int ci = i; // ok: the value in i is copied into ci
Объем переменных в C ++
Область видимости - это часть программы, в которой переменная имеет значение. В основном одно и то же имя может использоваться для обозначения разных сущностей в разных областях. Переменные видны с момента их объявления до конца области, в которой появляется их объявление.
#includeint main(){int sum = 0;// sum values from 1 through 10 inclusivefor (int val = 1; val <= 10; ++val)sum += val; // equivalent to sum = sum + valcout << "Sum of 1 to 10 inclusive is "<< sum < Эта программа определяет 3 имени: main, sum и val. Он использует имя пространства имен std вместе с двумя другими именами из этого пространства имен - cout и endl.
- Имя функции main определяется вне фигурных скобок. Имя функции main, как и большинство других имен, определенных вне функции, имеет глобальную область видимости. Это означает, что после объявления имена, находящиеся в глобальной области видимости , доступны во всей программе.
- Сумма переменных определяется в рамках блока, который является телом основной функции. Доступ к нему можно получить из точки объявления и из остальной части тела основной функции. Однако не за его пределами. Это означает, что у переменной sum есть область видимости блока .
- Переменная val определяется в области действия "for statement". Его можно легко использовать в этом операторе, но не где-либо еще в основной функции. Имеет локальный охват .
Вложенная область
Область может содержать другие области. Содержащаяся (или вложенная) область действия называется внутренней областью. Содержащая область - это внешняя область.
#includeusing namespace std;// Program for illustration purposes only: It is bad style for a function// to use a global variable and also define a local variable with the same nameint reused = 42; // reused has global scopeint main(){int unique = 0; // unique has block scope// output #1: uses global reused; prints 42 0cout << reused << " " << unique << endl;int reused = 0; // new, local object named reused hides global reused// output #2: uses local reused; prints 0 0cout << reused << " " << unique << endl;// output #3: explicitly requests the global reused; prints 42 0cout << ::reused << " " << unique << endl;return 0;} Выход №1 появляется перед локальным определением повторного использования. Таким образом, этот вывод
оператор - это тот, который использует повторно используемое имя, определенное в глобальной области видимости. Этот оператор выводит
42 0
Выход # 2 появляется после локального определения повторного использования. Теперь это в рамках. Следовательно, этот второй оператор вывода просто использует локальный объект с именем reused, а не глобальный, и выводит
0 0
Выход № 3 переопределяет правила области действия по умолчанию с помощью оператора области действия. У глобальной области нет имени. Таким образом, когда оператор области видимости (: :) имеет пустую левую часть. Он интерпретирует это как запрос на получение имени в правой части глобальной области видимости. Таким образом, выражение использует глобальное повторно используемое значение и выводит
42 0
Преобразование типа переменной
Переменная одного типа может быть преобразована в другой. Это известно как «преобразование типов». Давайте посмотрим на правила преобразования различных типов переменных C ++:
Присвоение не-bool переменной типа bool дает false, если значение равно 0, и true в противном случае.
bool b = 42; // b is trueПрисвоение bool одному из других арифметических типов дает 1, если bool истинно, и 0, если bool ложно.
bool b = true;int i = b; // i has value 1Присвоение значения с плавающей запятой переменной типа int дает усеченное значение. Сохраняемое значение - это часть до десятичной точки.
int i = 3.14; // i has value 3Присвоение значения int переменной типа float приводит к тому, что дробная часть становится равной нулю. Точность обычно теряется, если целое число имеет больше битов, чем может вместить плавающая переменная.
Int i=3;double pi = i; // pi has value 3.0Если мы попытаемся присвоить значение вне диапазона переменной беззнакового типа, результатом будет остаток от значения% (по модулю)
Например, 8-битный беззнаковый тип char может содержать значения от 0 до 255 включительно. Присвоение значения за пределами этого диапазона приведет к тому, что компилятор присвоит оставшуюся часть этого значения по модулю 256. Следовательно, согласно приведенной выше логике присвоение -1 8-битному беззнаковому символу дает этому объекту значение 255.
unsigned char c = -1; // assuming 8-bit chars, c has value 255Если мы попытаемся присвоить объекту подписанного типа значение, выходящее за пределы допустимого диапазона, результат будет непредсказуемым. Это не определено. Может показаться, что программа работает снаружи, или может произойти сбой, или она может выдать мусорные значения.
signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefinedКомпилятор применяет тот же тип преобразований, когда мы используем значение одного типа, когда ожидается значение другого типа.
int i = 42;if (i) // condition will evaluate as truei = 0;Если это значение = 0, то условие ложно; все остальные (ненулевые) значения возвращают истину. По той же концепции, когда мы используем bool в арифметическом выражении, его значение всегда преобразуется в 0 или 1. В результате использование bool в арифметическом выражении обычно почти наверняка неверно.
Предупреждение: не смешивайте знаковые и беззнаковые типы
Выражения, которые смешивают знаковый и беззнаковый, могут дать неожиданные и неверные результаты, если знаковое значение отрицательно. Как обсуждалось выше, значения со знаком автоматически преобразуются в беззнаковые.
Например, в арифметическом выражении вроде
x* yЕсли x равно -1, а y равно 1, и если и x, и y являются int, то значение, как и ожидалось, равно -1.
Если x - int, а y - беззнаковое, то значение этого выражения зависит от того, сколько битов имеет целое число на компилирующей машине. На нашей машине это выражение дает 4294967295.
Регистрировать переменные
Доступ к переменным регистров осуществляется быстрее, чем к переменным памяти. Таким образом, переменные, которые часто используются в программе на C ++, могут быть помещены в регистры с помощью ключевого слова register . Ключевое слово register указывает компилятору сохранить данную переменную в регистре. Помещать это в регистр или нет - это выбор компилятора. Как правило, сами компиляторы выполняют различные оптимизации, включая внесение некоторых переменных в регистр. В программе на C ++ нет ограничений на количество регистровых переменных. Но компилятор не может хранить переменную в регистре. Это связано с тем, что регистровая память очень ограничена и обычно используется ОС.
Определять:
register int i;Комментарии
Комментарии - это части кода, игнорируемые компилятором. Это позволяет программисту делать заметки в соответствующих областях исходного кода / программы. Комментарии представлены в виде блоков или отдельных строк. Комментарии к программе являются пояснительными. Его можно включить в код C ++, который поможет любому, кто читает его исходный код. Все языки программирования допускают ту или иную форму комментариев. C ++ поддерживает как однострочные, так и многострочные комментарии.
- Однострочные комментарии - это комментарии , которые начинаются с // и продолжаются до конца строки. Если последний символ в строке комментария - \, то комментарий продолжится в следующей строке.
- Многострочные комментарии - это те, которые начинаются с / * и заканчиваются * /.
/* This is a comment *//* C++ comments can also* span multiple lines*/Последовательности побега
Некоторые символы, такие как символы возврата и управляющие символы, не имеют видимого изображения. Такие символы известны как непечатаемые символы. Другие символы (одинарные и двойные кавычки, вопросительный знак и обратная косая черта) имеют особое значение во многих языках программирования.
Наши программы не могут использовать эти символы напрямую. Вместо этого мы можем использовать escape-последовательность для представления такого символа. Управляющая последовательность начинается с обратной косой черты.
В языке программирования C ++ определены несколько управляющих последовательностей:
Что оно делает?
Характер
Новая линия
\ п
Вертикальная табуляция
\ v
Обратная косая черта
\\
Возврат каретки
\р
Горизонтальная вкладка
\ т
Backspace
\ b
Вопросительный знак
\?
Formfeed
\ f
Предупреждение (звонок)
\ а
Двойная кавычка
\ "
Одиночная цитата
\ '
Мы используем escape-последовательность, как если бы это был один символ:
cout << '\n'; // prints a newlinecout << "\tguru99!\n"; // prints a tab followed by "guru99!" and a newlineМы также можем написать обобщенные escape-последовательности \ x, за которыми следует одна или несколько шестнадцатеричных цифр. Или мы используем \, за которым следует одна, две или три восьмеричные цифры. Обобщенная escape-последовательность представляет собой числовое значение символа. Некоторые примеры (при условии набора символов Latin-1):
\7 (bell) \12 (newline) \40 (blank)\0 (null) \115 ('M') \x4d ('M')Мы можем использовать предопределенные escape-последовательности, как и любой другой символ.
cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newlinecout << '\115' << '\n'; // prints M followed by a newlineРезюме
- Переменная C ++ предоставляет нам возможность именованного хранилища.
- Типы переменных C ++: int, double, char, float, string, bool и т. Д.
- Содержащаяся (или вложенная) область действия называется внутренней областью, а содержащая область - внешней областью.
- Переменная одного типа может быть преобразована в другой. Это известно как «преобразование типов».
- Доступ к переменным регистров осуществляется быстрее, чем к переменным памяти.
- Комментарии - это части кода, игнорируемые компилятором.
- Некоторые символы, такие как символы возврата и управляющие символы, не имеют видимого изображения.