Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Операции и выражения. Типизированные константы

Типизированные константы

Разновидностью переменных являются типизированные константы. Это переменные, значение которых (заданное при инициализации) нельзя изменить.

Создание типизированной константы ничем не отличается от инициализации переменной, за исключением того, что перед оператором объявления ставится ключевое слово const:

const double Pi = 3.14159265;

const int I=1, j=2, k=5;

const c1=’d’;

const z=0x23A1; //шестнадцатеричная константа

const x=0123; //восьмеричная константа

Типизированные константы отличаются от символических констант:

ü типизированная константа по своему смыслу относится к конкретному типу данных, поэтому компилятор генерирует совершенно определенное представление для ее значения. Представление символической константы не определено.

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

В силу этих причин предпочтительнее применять для представления постоянных величин типизированные константы, а не макросы #define.

Время существования или время жизни переменной бывает:

ü Локальное – существование переменной в пределах блока, в котором она описана;

ü Глобальное – при выполнении всей программы.

Управлять видимостью переменных можно либо изменением места объявления переменной в программе, либо использованием модификаторов:

Auto – автоматическая (по умолчанию) переменная (локальная). Она действует внутри блока, в котором определена. Под нее выделяется временная память при входе в блок, а при выходе память освобождается, т.е. переменная уничтожается;

Register – регистровая. Хранится в регистре процессора. Доступ к ней быстрее, чем к автоматической.

Extern – внешняя глобальная переменная. Она видна во всей программе.

Static – статическая переменная. Память ей выделяется после объявления и сохраняется до конца программы. Она видна в пределах блока, в котором описана.

 

Знак равенства также является операцией присваивания, которая сама (и, соответственно, все выражение в целом) возвращает значение. В этом отличие С от других языков, в частности Pascal, где присваивание является оператором а не операцией. Оператором выражение станет, если поставить после него точку с запятой.

В следующей таблице дана сводка всех операций языка С в порядке убывания приоритета.

Операция Описание Приоритет Ассоциация
Первичные и постфиксные операции
[] индексация массива   слева направо
() вызов функции   слева направо
. элемент структуры   слева направо
-> элемент указателя   слева направо
++ постфиксный инкремент   слева направо
-- постфиксный декремент   слева направо
Одноместные операции
++ префиксный инкремент   справа налево
-- префиксный декремент   справа налево
sizeof размер в байтах   справа налево
(тип) приведение типа   справа налево
~ поразрядное NOT   справа налево
! логическое NOT   справа налево
- унарный минус   справа налево
& взятие адреса   справа налево
* разыменование указателя   справа налево
Двухместные и трехместные операции
Мультипликативные
* умножение   слева направо
/ деление   слева направо
% остаток от деления двух целых   слева направо
Аддитивные
+ сложение   слева направо
- вычитание   слева направо
Поразрядного сдвига
<< сдвиг влево Одиннадцать слева направо
>> сдвиг вправо Одиннадцать слева направо
Отношения
< меньше   слева направо
<= меньше или равно   слева направо
> больше   слева направо
>= больше или равно   слева направо
== равно   слева направо
! = не равно   слева направо
Поразрядные
& поразрядное AND   слева направо
^ поразрядное XOR   слева направо
| поразрядное OR   слева направо
Логические
&& логическое AND   слева направо
|| логическое OR   слева направо
Условные
?: условная операция   справа налево
Присваивания
= Присваивание   справа налево
*= присвоение произведения   справа налево
/= присвоение частного   справа налево
%= присвоение модуля   справа налево
+= присвоение суммы   справа налево
-= присвоение разности   справа налево
<<= присвоение левого сдвига   справа налево
>>= присвоение правого сдвига   справа налево
&= присвоение AND   справа налево
^= присвоение XOR   справа налево
|= присвоение OR   справа налево
, запятая   слева направо

 

<== предыдущая лекция | следующая лекция ==>
Встроенные типы данных | Смешанные выражения
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 288; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.