Переменные

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

Любая переменная, встречающаяся в программе, имеет имя (идентификатор) и должна быть описана. Требования к имени переменной такие же, как и к идентификаторам. Возможно и рекомендуется переменной задавать стартовое значение. Когда программа начинает работать, места под значения отведены, но не очищены. Это означает, что в ячейках памяти может быть все, что угодно (остатки от другой программы или ее следы). Поэтому важно, чтобы каждая переменная перед использованием была бы заполнена имеющим смысл или хотя бы нулевым (пустым) значением.

Форма записи:

СпецификаторТипа <ИмяПеременной1, …, ИмяПеременнойN>;

Или для переменных со стартовым значением

СпецификаторТипа <ИмяПеременной1=Значение1, …, ИмяПеременнойN=ЗначениеN>;

Как и для констант в качестве стартового значения могут быть:

1) непосредственно число указанного типа;

Простое выражение, допустимое для заданного типа данных(допускается использовать в них описанные ранее константы или переменные со стартовым значением (см. #2.2.4.2)).

Примеры:

float X;

double A,B;

int i, j=0,k=7+j, m=k*2+5;

char znak=’=’;

Модификатор volatile

Модификатор volatile указывает, что данный объект (это может быть только переменная) может быть модифицирован не только внутри, но и извне программы, например, подпрограммой прерывания или портом ввода/вывода. Объявление volatile предупреждает компилятор, что тот не должен делать допущений относительно значения объекта во время расчета содержащих его выражений, т.к. его значение может в любой момент времени быть изменено извне. Компилятор также не будет делать такую переменную регистровой.

Пример:

volatile int ticks;

interrupt timer()

{

ticks++;

}

wait(int interval)

{

ticks=0;

while (ticks<interval);

}

Эти подпрограммы (предполагается, что timer правильно связана с аппаратным прерыванием часов) реализуют выдержку по времени между «тиканьем» часов, заданную аргументом interval. Высоко оптимизированный компилятор не может загружать значение ticks в проверку выхода из цикла while, т.к. цикл не изменяет значение ticks.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: