Статические переменные и функции
Функции и переменные, для которых указан класс памяти static, видимы лишь от точки описания до конца файла. Если пользователь не указал начального значения, то все статические переменные, как и внешние, инициируются значением нуль. Инициирование структурных статических переменных выполняется по тем же правилам, что и внешних. Если статическая переменная описана внутри функции, то первый раз она инициируется при входе в блок функции. Значение переменной сохраняется от одного вызова функции до другого. Таким образом, статические переменные можно использовать для хранения значений внутри функции на протяжении времени работы программы, причем такие переменные будут невидимы вне файла, где они определяются. Внешние переменные Любая переменная, описанная вне какой-либо функции и не имеющая спецификатора памяти, является внешней или глобальной переменной. Область видимости такой переменной простирается от точки ее описания до конца файла. Внутри локального блока одноименная локальная переменная заслоняет глобальную. Для внешних переменных память освобождается один раз и остается такой до окончания программы. Операции Арифметические операции К арифметическим операциям относятся: сложение (+), вычитание (-), деление (/), умножение (*) и остаток от деления (%). Остаток не определен для вещественных переменных. Целочисленные сложение и вычитание выполняются без учета переполнения. Операция поразрядного сдвига целого числа E влево или вправо на E2 разрядов имеет вид соответственно: E<<E2 или E>>E2. Операции отношения В языке определены следующие операции отношения: равенство (==, два знака равества), неравенство (!=), меньше (<), меньше или равно (<=), больше (>), больше или равно (>=).
Все перечисленные операции вырабатывают результат типа int (в числовых выражениях) или bool (в логических выражениях). Если данное отношение между операндами истинно, то значение этого целого - единица (true), а если отношение ложно, то нуль (false). Все операции типа «больше - меньше» имеют равный приоритет, причем он выше, чем приоритет операций == и!=. Приоритет операции присваивания ниже приоритета всех операций отношения. Для задания правильного порядка вычислений используются скобки.
Логические операции Допускаютсяследующие логические операции: && (И), || (Или, две вертикальные черточки),! (отрицание, восклицательный знак). Аргументами логических операций могут быть любые числа, включая задаваемые аргументами типа char или логические переменные (bool). Результат логической операции аналогичен результату операции сравнения. Вообще все числовые значения, отличные от нуля, интерпретируются как истина. Логические операции имеют самый низкий приоритет. Внимание! Вычисление выражений, содержащих логические операции, производится слева направо и прекращается (усекается), как только удастся определить результат, т.е. остальные проверки, не влияющие на конечный результат, не производятся. Для целочисленных переменных существуют операции поразрядного И (&), ИЛИ (^), исключающего ИЛИ (|, вертикальная черта), отрицания (~, тильда). Операции присваивания В одном операторе операция присваивания может встречаться несколько раз. Вычисления производятся справа налево. Пример: а = (b = c) * d; // в начале вычисляется b = c, далее a=b*d. Пример использования многократного присваивания: a=b=c=d=e=0. Операции a+=b, a-=b, a*=b и a/=b являются укороченной формой записи, соответственно: а = а + b; а = а - b; a= а* b; а = а/b. Префиксные и постфиксные операции «++» (два плюса) и «–» (два минуса) используют для увеличения (инкремент) и уменьшения (декремент) на единицу значения переменной до использования переменной в выражении, если операция указана перед именем переменной; если операция указана после имени переменной, то после использования переменной соответственно.
Если тип левой части присваивания отличается от типа правой части, то тип правой части приводится к типу левой. Пример вычисления выражения и вывода его значения (50): int main(int argc, char **argv) { int a,b,c=3,d=4,f=3,g,h=5,z=6,i; a=z+(b=c*d*f +(g= h +(i=3))); printf («%d\n», a); getch(); return 0; } Операцию sizeof (размер) можно применить к константе, типу или переменной. В результате будет получено число байтов, занимаемых операндом. Если операндом является тип, то такой операнд следует заключить в круглые скобки. Если операнд - переменная, то скобки можно опустить. Операция «запятая» применяется для связывания между собой выражений. Список выражений, разделенный запятыми, трактуется как единое выражение и вычисляется слева направо. Операторы
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|