Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


 онстанты в €зыке —и




 роме переменных в программе часто используютс€ константы.

 онстанта Ц это значение, которое не может быть изменено в процессе работы программы.

¬ €зыке —и выдел€ют следующие разновидности констант, которые могут иметь разные типы и формы представлени€:

  1. ÷елые константы.

÷елые константы существуют дл€ представлени€ в программе целых значений.  онстанты могут иметь разные типы. “ип константы определ€ет представление константы в оперативной пам€ти: кодировку константы, объем в байтах, какой набор значений может представл€тьс€ константой, а также операции, которые можно выполн€ть с константой. —уществуют следующие типы целых констант:

- тип int (по умолчанию), в оперативной пам€ти константа данного типа кодируетс€ в MS DOS Ц 2 байтами, в Win32 Ц 4 байтами, примеры: 1245, 6, 175, 5, 1425;

- тип long Ц в оперативной пам€ти константа кодируетс€ 4 байтами, константа будет иметь этот тип, если диапазон выходит за тип int (в MS DOS), или €вно указываетс€ тип с помощью суффикса l (L), примеры: 12l, 14567L, 125234 (дл€ MS DOS);

- константы могут быть представлены типами unsigned int и unsigned long, дл€ €вного указани€ необходимо использовать суффикс u (U), примеры 105u (unsigned int), 105ul(unsigned long).

÷елые константы всегда задают неотрицательные значени€, дл€ задани€ отрицательного значени€ используют операцию унарный минус, которую примен€ют к целой константе: -1000, -200l.

÷елые константы также могут иметь различные формы представлени€. ‘ормы представлени€ введены дл€ удобства программиста, одно и то же значение константы может быть представлено в различных формах в исходном тексте программы, при этом после компил€ции полученный исполн€емый код и кодирование константы в пам€ти будет идентично и не зависит от формы представлени€. ƒл€ целых констант существуют три формы представлени€:

- в дес€тичной системе счислени€ (по умолчанию) Ц 1234, 378l, 346;

- в шестнадцатеричной системе счислени€, признаком данного представлени€ €вл€ютс€ 2 первых символа константы 0x (или 0X), в константе можно использовать шестнадцатеричные цифры: 0..9, A (a), B (b), Е, F (f), примеры Ц 0x10, 0x10acd, 0XFFFF;

- в восьмеричной системе счислени€, признаком данного представлени€ €вл€етс€ первый символ 0, в константе можно использовать восьмеричные цифры: 0..7, примеры Ц 010, 070, 01237;

  1. ¬ещественные константы.

¬ещественные константы служат дл€ представлени€ вещественных значений, которые могут иметь целую и дробные части. ѕо аналогии с целыми константами существуют различные типы и формы представлени€ вещественных констант. ƒл€ вещественной константы можно примен€ть операцию унарный минус с целью получени€ отрицательного значени€.

—уществует следующие три типа вещественных констант:

- тип double (по умолчанию), в оперативной пам€ти константа кодируетс€ 8 байтами, примеры: 12.5,.123, 0.5, 1. (наличие точки в таком представлении об€зательно);

- тип float Ц 4 байта, используетс€ суффикс f (F), примеры: 10.5f, 0.123F;

- тип long double Ц 10 байт, используетс€ суффикс l (L), примеры: 10.5l, 0.9L.

—уществуют две формы представлени€ вещественных констант:

- форма с точкой (дес€тична€ форма), примеры: 10.125, 1. (значение 1.0), .125 (значение 0.125), 0.125, представл€етс€ в форме дес€тичной дроби, состоит из трех основных элементов целой части, точки, дробной части, причем, цела€ или дробна€ часть могут отсутствовать, наличие точки об€зательно, если цела€ часть отсутствует, то она считаетс€ равной 0, если дробна€ часть отсутствует, то она также считаетс€ равной 0;

- форма со знаком экспоненты (экспоненциальна€ форма): 1e-5, 12.23E4F (тип константы float), представл€етс€ в виде мантиссы и пор€дка, мантисса записываетс€ слева от знака экспоненты ( или е), пор€док Ч справа от знака. «начение константы определ€етс€ как произведение мантиссы и возведенного в указанную в пор€дке степень числа 10..

  1. —имвольные константы. »значально в —и стандарта ANSI символьные константы представл€лись одним символом, который мог быть буквой, цифрой, знаком пунктуации или специальный символом, заключенным в апострофы, примеры, СaТ, СdТ, С1Т, С.Т, С С, данные константы представлены в пам€ти типом char и занимают 1 байт. «начением символьной константы €вл€етс€ числовое значение кода символа в кодировке, используемой в данной операционной системе, например, в кодировке ASCII.

—имвольные константы могут участвовать в арифметических операци€х на правах полноценных целых чисел, хот€ чаще их сравнивают с другими символами. Ќекоторые символы представл€ютс€ в символьных и строковых константах с помощью специальных управл€ющих последовательностей символов, начинающихс€ с С\Т (коса€ обратна€ наклонна€ черта), называемых эскейп- последовательност€ми. ѕримеры: С\\Т - символ обратный слеш, С\ТТ - символ апостроф, С\ФТ - символ двойные кавычки, С\nТ Ц символ конец строки (код 10), С\rТ Ц возврат каретки (код 13), С\aТ Ц звуковой сигнал (код 7), С\bТ Ц возврат на шаг (забой) (код 8).  роме того, любой символ можно представить в виде его кода в восьмеричной или шестнадцатеричной системах счислени€ в форматах С\oooТ или С\xhhТ, где o Ц восьмерична€ цифра, а h Ц шестнадцатерична€ цифра (значение восьмеричного кода не может превышать 255). Ќапример, символ пробел с дес€тичным кодом 32 может быть записан как С С, или в шестнадцатеричном коде как С\x20Т, или в восьмеричном коде как С\40Т.

¬ некоторых компил€торах, например, Visual C++ разрешены много символьные константы (до 4-х символов): СasdfТ, СGRТ, они представлены в пам€ти типом int (первый символ Ц младший байт).

  1. —троковые константы Ц последовательность символов, заключенных в кавычки (не в апострофы), внутри строковых констант допускаетс€ использовать эскейп- последовательности или коды символов. ѕример: Уначало строки\nтекст с новой строкиФ, при печати текст будет выводитьс€ на две строки. ‘ормально строкова€ константа €вл€етс€ массивом символов. ¬о внутреннем представлении строки в оперативной пам€ти в конце присутствует нулевой символ С\0Т, так что физический объем пам€ти дл€ хранени€ строки превышает количество символов, записанных между кавычками на единицу.
  2.  онстанты типа перечислений. ћожно создавать перечисл€емый тип, содержащий константы. ѕеременным этого типа можно присваивать значени€ только этих констант. ƒанные константы представл€ютс€ в пам€ти точно так же, как константы типа int.

‘ормат перечислений следующий:

enum <им€_типа> {

<им€1>[=<инициализатор1>],

<им€2>[=<инициализатор2>],

ЕЕЕЕЕЕ.

<им€N>[=<инициализаторN>] };

»дентификаторы <им€1>, <им€2>, Е, <им€N> -выступают далее в качестве констант, по умолчанию, если нет инициализатора, перва€ константа инициализируетс€ 0, кажда€ последующа€ на 1 больше.

ѕример перечислени€

enum A

{

a, // 0

b, // 1

c=10, // 10

d // 11

};

ƒалее в программе обращатьс€ к данным константам, int i=b; переменной i будет присвоено значение 1.

  1. —уществует еще одна константа Ц это, так называемый, нулевой указатель, дл€ задани€ которого введена именованна€ константа NULL, используетс€ дл€ задани€ значени€ указател€, который ни на что не указывает. ќбычно соответствует значению 0, но не об€зательно во всех системах.

1.2.5. ќператоры Ц выражени€ и операции €зыка —и

ƒл€ вычислени€ значений используютс€, так называемые, операторы- выражени€.

ќператоры Ц выражени€, стро€тс€ из операндов и знаков операций, выражение задает правило вычислени€ некоторого значени€, проведем следующую классификацию выражений:

Х на базе операции присваивани€ Ђ=ї: x=y+10;

Х на базе операций инкремент, декремент (++ --): i++; --j;

Х вызов функции: f1();

Х комбинированные выражени€: x=i++ + f();

ѕод операцией будем понимать некоторое действие, выполн€емое над операндами (аргументами операции), результат операции всегда некоторое значение определенного типа, которое может быть использовано справа от операции присваивани€ (может быть присвоено некоторой переменной).

ќперации €зыка —и дел€тс€ на следующие классы:

”нарные операции:

Ђ-ї - Ђунарный минусї примен€етс€ к арифметическим операндам (целым, вещественным переменным или константам), результат операции значение операнда с противоположным знаком;

Ђ+ї - Ђунарный плюсї операци€ ничего не делает, введена дл€ симметрии с операцией Ђунарный минусї;

Ђ*ї - Ђобращение по адресуї, операци€ примен€етс€ к указател€м, результат операции значение объекта (операнда), на который указывает указатель;

Ђ&ї - Ђполучение адресаї, результат операции Ц адрес объекта (переменной);

Ђ~ї - Ђпоразр€дное отрицаниеї операци€ примен€етс€ только к целым операндам, результат операции целое значение, в котором разр€ды исходного операнда инвертированы;

Ђ!ї - Ђлогическое отрицаниеї (Ђлогическое Ќ≈ї), дает в результате значение 0, если операнд есть истина (не нуль), и значение 1, если операнд равен нулю (в Visual C++ тип результата bool), следует отметить, что в базовом —и стандарта ANSI отсутствовал в €вном виде логический тип, который бы принимал 2 значени€: Ђистинаї и Ђложьї, вместо логического типа использовалс€, как правило, целый тип, значение 0- интерпретировалось, как Ђложьї, любое значение отличное от 0 было- Ђистинаї;

(<тип>) Ц Ђопераци€ преобразовани€ типаї, была рассмотрена ранее;

Ђsizeofї Ц операци€ определени€ размера предназначена дл€ вычислени€ размера объекта или типа в байтах, и имеет две формы:

sizeof выражение или sizeof(выражение)

sizeof(тип)

++ - инкремент (увеличение на 1), -- - декремент (уменьшение на 1), имеют две формы записи Ч префиксную, когда операци€ записываетс€ перед операндом, и постфиксную. ≈сли операции используютс€ сами по себе (в операторе только одна операци€), то разницы между двум€ формами нет. ≈сли операци€ примен€етс€ внутри выражени€ с другими операци€ми, то в префиксной форме сначала измен€етс€ операнд, а затем его новое значение подставл€етс€ в выражение, а в постфиксной форме в выражение подставл€етс€ старое значение, а затем измен€етс€ значение операнда. Ќапример,

int i=10, j;

j=++i; // ѕрефиксна€ форма операции

¬ результате выполнени€ данного фрагмента, i и j будут равны 11 (переменной j присваиваетс€ новое значение i, увеличенное на 1), если изменить форму операции ++:

int i=10, j;

j=i++; // ѕостфиксна€ форма операции

то, после выполнени€ i будет равно 11, а j будет равно 10, переменной j присваиваетс€ старое значение переменной i, а затем оно увеличиваетс€ на 1. ќперации чаще примен€ют к целым операндам, но их можно примен€ть к вещественным операндам и даже к указател€м.

Ѕинарные операции можно разделить на следующие классы:

јрифметические:

Ђ+ї - бинарный плюс;

Ђ-ї - бинарный минус;

Ђ*ї - умножение;

Ђ/ї - деление;

% - получение остатка от делени€.

ѕервые четыре операции примен€ютс€ к арифметическим операндам: целым или вещественным, операции Ђ+ї и Ђ-ї ограниченным способом могут примен€тьс€ к указател€м. ќпераци€ Ц Ђ%ї примен€етс€ только к целым операндам.

Ћогические:

Ђ&&ї - логическое »;

Ђ||ї - логическое »Ћ»;

Ђ^ї - логическое исключающее »Ћ».

ќперанды логических операций могут иметь арифметический тип или быть указател€ми, при этом операнды в каждой операции могут быть различных типов. ѕреобразовани€ типов не производ€тс€, каждый операнд оцениваетс€ с точки зрени€ его эквивалентности нулю (операнд, равный нулю, рассматриваетс€ как Ђложьї, не равный нулю Ч как Ђистинаї). ¬ Visual C++ тип результата int или bool в зависимости от типов операндов.

ѕоразр€дные:

Ђ&ї - поразр€дное »;

Ђ|ї - поразр€дное »Ћ»;

Ђ^ї - поразр€дное исключающее »Ћ»;

Ђ>>ї - поразр€дный сдвиг вправо;

Ђ<<ї - поразр€дный сдвиг влево.

ƒанные операции примен€ютс€ только к целочисленным операндам и работают с их двоичными представлени€ми. ѕри выполнении операций Ђ&ї, Ђ|ї, Ђ^ї операнды сопоставл€ютс€ побитово (первый бит первого операнда с первым битом второго, второй бит первого операнда со вторым битом второго, и т д.).

ќперации сдвига сдвигают двоичное представление первого операнда влево или вправо на количество двоичных разр€дов, заданное вторым операндом. ѕри сдвиге влево Ђ<<ї освободившиес€ разр€ды обнул€ютс€. ѕри сдвиге вправо Ђ>>ї освободившиес€ биты заполн€ютс€ нул€ми, если первый операнд беззнакового типа, и знаковым разр€дом в противном случае.

ќтношени€ (сравнени€):

Ђ==ї - равно (не путать с операцией присваивани€ Ђ=ї);

Ђ!=ї - не равно;

Ђ>ї - больше;

Ђ<ї - меньше;

Ђ>=ї - больше или равно;

Ђ<=ї - меньше или равно.

ќперации отношени€ сравнивают первый операнд со вторым. ќперанды могут быть арифметического типа или указател€ми. –езультатом операции €вл€етс€ значение Ђистинаї (любое значение не равное 0, как правило, 1) или Ђложьї (0). ¬ Visual C++ тип результата bool.

ѕрисваивани€:

Ђ=ї - простое присваивание.

ѕервый операнд должен быть L -значением, т.е. областью пам€ти, куда будет помещен результат операции, второй Ц выражением. —начала вычисл€етс€ выражение, сто€щее в правой части операции, а потом его результат записываетс€ в область пам€ти, указанную в левой части. “ак называемое, L -значение (L- value) (леводопустимое значение, может быть использовано слева от операции присваивани€), так обозначаетс€ любое выражение, адресующее некоторый участок пам€ти, в который можно занести значение.

op= (где op Ц символ бинарной операции) Ц комбинированное присваивание, комбинаци€ бинарное операции с операцией присваивани€, например, Ђ+=ї - присваивание со сложением, по аналогии существуют операции: Ђ*=ї, Ђ/=ї, Ђ-=ї, Ђ%=ї, Ђ&=ї, Ђ|=ї, Ђ^=ї и др.  омбинированные операции работают по следующему правилу:

i+=10; аналогично i=i+10;

ƒругие бинарные операции, просто их перечислим:

() Ц вызов функции;

[ ] Ц обращение к элементу массива;

Ђ.ї (Ђточкаї) Ц обращение к полю переменной структурного типа;

Ђ->ї - обращение к полю переменной структурного типа через указатель;

Ђ,ї (Ђзап€та€ї) Ц последовательное вычисление, может ставитьс€ между выражени€ми, выражени€ вычисл€ютс€ последовательно, результат операции результат второго операнда (выражени€).

“ернарна€ операци€:

Ђ?:ї - условна€ операци€.

‘ормат: <операнд1>? <операнд2>: <операнд3>

ѕервый операнд имеет тип, замен€ющий логический Ц арифметический или указатель, если первый операнд имеет значение Ђистинної, то результат операции Ц значение второго операнда, а если Ђложьї, то результат операции значение третьего операнда. ѕример,

y= x>=0? x: -x;

переменной y присваиваетс€ значени€ модул€ переменной x.

≈сли в одном выражении присутствуют несколько разных операций, то они выполн€ютс€ в соответствии с приоритетами Ц в первую очередь выполн€ютс€ операции с более высоким приоритетом.  ажда€ операци€ в —и имеет свой приоритет, всего существует 15 классов приоритетов. ≈сли в одном выражении присутствует несколько одинаковых операций, то они могут выполн€тьс€ или слева направо или справа налево, это определ€ет такое свойство операций, которое называетс€ ассоциативностью (пор€док выполнени€ операции в выражении). ѕриоритеты и ассоциативность операций €зыка —и представлены в таблице 2, операции в таблице представлены в пор€дке убывани€ приоритета.

“аблица 2 Ц ѕриоритеты и ассоциативность операций €зыка —и

ѕриоритет (–анг) ќперации Ќаименование јссоциативность
  () [] ->. ѕервичные Ѓ
  ! ~ + - ++ -- & * (тип) sizeof ”нарные  
  * / % ћультипликативные Ѓ
  + - јддитивные Ѓ
  Ђї ѕоразр€дный сдвиг Ѓ
  < <= >= > ќтношение (сравнение) Ѓ
  ==!= ќтношение (сравнение) Ѓ
  & ѕоразр€дное » Ѓ
  ^ ѕоразр€дное исключающее »Ћ» Ѓ
  | ѕоразр€дное »Ћ» Ѓ
  && Ћогическое » Ѓ
  || Ћогическое »Ћ» Ѓ
  ?: ”словна€  
  = *= /= %= += -= &= ^= |= <<= >>= ѕростое и составное присваивание  
  , (операци€ "зап€та€") ѕоследовательное вычисление Ѓ

ƒл€ изменени€ пор€дка выполнени€ операций используютс€ круглые скобки.

ѕримеры:

y = a + b * 10; // ¬ первую очередь выполн€етс€ *, затем +, далее =

y = (a + b) * 10; // ¬ первую очередь выполн€етс€ + (из- за скобок), затем *, далее =

a = b = c = 100; // ќперации = выполн€ютс€ справа налево,

// всем переменным будет присвоено значение 100





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-10-01; ћы поможем в написании ваших работ!; просмотров: 3410 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

Ќаука Ч это организованные знани€, мудрость Ч это организованна€ жизнь. © »ммануил  ант
==> читать все изречени€...

1279 - | 1135 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.035 с.