|
|||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Символьный тип данных (тип char)В стандарте C++ нет типа данных, который можно было бы считать действительно символьным. Для представления символьной информации есть два типа данных, пригодных для этой цели, – это типы char и wchar_t. Переменная типа char рассчитана на хранение только одного символа (например, буквы или пробела). В памяти компьютера символы хранятся в виде целых чисел. Соответствие между символами и их кодами определяется таблицей кодировки, которая зависит от компьютера и операционной системы. Почти во всех таблицах кодировки есть прописные и строчные буквы латинского алфавита, цифры 0,..., 9, и некоторые специальные символы. Самой распространенной таблицей кодировки является таблица символов ASCII (American Standard Code for Information Interchange – Американский стандартный код для обмена информацией). Так как в памяти компьютера символы хранятся в виде целых чисел, то тип char на самом деле является подмножеством типа int. Под величину символьного типа отводится 1 байт. Тип char может использоваться со спецификаторами signed и unsigned. В данных типа signed char можно хранить значения в диапазоне от –128 до 127. При использовании типа unsigned char значения могут находиться в диапазоне от 0 до 255. Для кодировки используется код ASCII. Символы с кодами от 0 до 31 относятся к служебным и имеют самостоятельное значение только в операторах ввода-вывода. Величины типа char также применяются для хранения чисел из указанных диапазонов. Тип wchar_t предназначен для работы с набором символов, для кодировки которых недостаточно 1 байта, например в кодировке Unicode. Размер типа wchar_t равен 2 байтам. Если в программе необходимо использовать строковые константы типа wchar_t, то их записывают с префиксом L, например, L "Слово".
26. Оператор присваивания Оператор присваивания — это самый употребительный оператор. Его назначение — присвоить новое значение какой-либо переменной. В C++ имеется три формы этого оператора. 1) Простой оператор присваивания записывается так: переменная = выражение; Данный оператор работает следующим образом: вначале вычисляется выражение, записанное справа от символа операции = (равно), затем полученный результат присваивается переменной, стоящей слева от знака =. Тип результата должен совпадать с типом переменной, записанной слева, или быть к нему приводимым. Слева от знака = может быть только переменная, справа же можно записать и константу, и переменную и вообще выражение любой сложности. Пример операторов x=3; r=x; y=x+3*r; s=sin(x); 2) Множественное присваивание — в таком операторе последовательно справа налево нескольким переменным присваивается одно и то же значение, например: a=b=c=1; Так можно сразу определить, к примеру, что в равностороннем треугольнике все стороны равны одному и тому же числу 1. Приведенный выше оператор эквивалентен последовательному выполнению трёх операторов: a=1; b=a; c=b; Естественно, нам проще записать один оператор, а не три. Программа получается короче, более естественно смотрится текст, и работает такая конструкция немного быстрее. 3) Присваивание с одновременным выполнением какой-либо операции в общем виде записывается так: переменная знак_операции = выражение; и равносильно записи переменная = переменная знак_операции выражение; Например, оператор: s += 5; // 1-й вариант делает то же самое, что и оператор s = s + 5; // 2-й вариант а именно: взять старое значение из переменной s, прибавить к нему число 5 и полученное значение снова записать в переменную s. Как видим, запись 1-го варианта короче записи 2-го варианта, да и выполняется быстрее, так как в 1-м варианте адрес переменной s вычисляется 1 раз, а во 2-м варианте — дважды.
27. Арифметические операции в С/С++ Это наиболее часто используемые операции. Их смысл близок к тому, каким он известен из курса математики. Итак, перечислим их:
Приоритет операций сложения и вычитания ниже, чем умножения, деления и вычисления остатка. Для изменения порядка вычисления используют круглые скобки, например для умножения на 2 суммы двух чисел A и B можно написать: 2*(A+B) Далее. Как видно из полученных результатов, в C++ один знак / означает две разные операции. Если один или оба операнда — вещественные, то выполняется обычное деление, если оба операнда — целые, то выполняется деление нацело и результат будет целого типа. Использование этой операции требует повышенной внимательности, например, если запрограммировать вычисление математического выражения буквально, т.е. так: 1/3*sin(2*X) то результат вне зависимости от значения X всегда будет равен нулю, так как выражение 1/3 означает деление нацело. Для решения проблемы достаточно один из операндов сделать вещественным 1.0/3*sin(2*X) Операция вычисления остатка (%) применима только для целочисленных операндов. Смена знака. Унарная операция «-» означает смену знака. Как видно из общей таблицы всех операций, она имеет очень высокий приоритет — выше, чем, к примеру, у операции умножение. Поэтому в выражении -A*B вначале выполняется смена знака для A, а затем умножение -A на B. Для парности имеется и операция унарный плюс, т.е. можно написать +A Для каких целей это использовать? Сложно сказать. Но такая возможность есть. Более интересны, и главное, очень употребительны операции автоувеличения и автоуменьшения. Операция автоувеличения (инкремент) Записывается как два знака плюс (без пробелов между ними!), применяется для увеличения на единицу значения переменной, например: A++ Исходное значение переменной A увеличивается на 1, и полученный результат сохраняется в переменной A. По полученному результату эта операция соответствует следующему выражению: A=A+1 хотя на уровне машинных команд — это разные вещи. Операция автоувеличения эквивалентна аналогичной команде INC языка ассемблера. Имеет малый размер кода и выполняется быстрее обычного сложения. На старых процессорах типа Intel 8086 операция инкремента выполнялась в несколько раз быстрее, чем операция сложения. Важный момент: автоувеличение применимо именно для переменной, но не для константы или выражения. Для операции инкремент допустимы две формы записи: префиксная — например, ++A постфиксная — например, A++. При префиксной форме записи делается увеличение переменной на 1 и затем используется новое значение этой переменной. В постфиксной форме записи также переменная увеличивается на 1, но в текущем выражении используется старое значение переменной. Рассмотрим это на примерах. Применим постфиксную форму записи. Результат:
Префиксная форма записи даёт такой результат:
Как видим, переменная A в обоих случаях изменилась на 1 и равна 2, а вот для переменной B результаты получились различными. Из приведённых примеров следует, что использование операции автоувеличения в выражениях требует от программиста вдумчивого отношения, необходимо чётко представлять, что хотим получить, и что получим в действительности. Если операция автоувеличения используется как самостоятельный оператор, т.е. как предложение на языке C++, то между обеими формами нет ни какой разницы. Так, операторы A++; // или ++A; увеличивают значение переменной A и ничего более, т.е. при таком использовании они, по сути, эквивалентны. Чаще всего инкремент используют в операторах цикла для увеличения на 1 переменной цикла. Операция автоуменьшения (декремент) Записывается как два знака минус (без пробелов между ними!), применяется для уменьшения на единицу значения переменной, например: A-- Исходное значение переменной A уменьшается на 1, и полученный результат сохраняется в переменной A. По полученному результату эта операция соответствует следующему выражению: A=A-1 Операция автоуменьшения также имеет две формы записи: постфиксная (A--) и префиксная (--A). В языка ассемблера есть соответствующая ей команда DEC. Это также одна из наиболее быстрых операций. Всё, что было сказано об особенностях работы операции автоувеличения, справедливо и для операции автоуменьшения.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.) |