![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Локальные и глобальные переменные. Область видимости переменнойСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
В языке Си имеет очень важное значение имеет место в программе, в котором происходит объявление переменной. Это определяет область существования переменной (эту область называют областью видимости). Программа не будет компилироваться, если не описать все используемые переменные. Различают локальные и глобальные переменные. Локальные переменные существуют и в теле функции или оператора управления. Локальные переменные на языке Си (но не С++) объявляются в начале блока – после открывающей фигурной скобки. Только после этого можно использовать их имена в выражениях и операторах. Область видимости локальной переменной – до соответствующей закрывающей фигурной скобки. Глобальные переменные объявляются вне функций и существуют от точки объявления до конца программы. Соответственно, значение глобальной переменной можно использовать во любом месте программы. Рассмотрим пример #include <stdio.h> int i=1; /* объявление и инициализация глобальной переменной */ float f; /* объявление глобальной переменной */ void fun(void); /* прототип функции пользователя */ void main(void) { int k,n; /* объявление локальных переменных */ float g1; /* объявление локальной переменной */ ... } void fun(void) /* описание функции пользователя */ { int j=5; /* объявление локальной переменной */ char ch; /* объявление локальной переменной */ ... } В программе объявлены глобальные и локальные переменные, а также помимо функции main() используется подпрограмма fun(). Глобальные переменные i и f можно использовать в обеих функциях. Значения локальных переменных r, n и g1 можно использовать только в теле функции main(), а переменных j и ch – в теле функции fun(). Константы В языке Си представляют собой постоянные параметры, константы, которые не изменяются в ходе исполнения программ. Константы могут быть для любого типа данных. Примеры констант приведены в табл. 2.2. Пример констант различных типов данных Таблица 2.2.
Константы типа символ Можно задавать в двух формах в виде отдельного символа, который записывается в одиночных кавычках ('А ') или в виде целого числа (55). При этом необходимо помнить, что константы, например, '0' и 0 описывают различные данные.
В языке Си существуют символьные константы, обозначающие специальные управляющие символы, такие как: перевод строки, звуковой сигнал, горизонтальная табуляция. Эти символы нельзя ввести с клавиатуры. Для их использования вначале записывается символ '\' – обратный слеш. Например, символ, означающий перевод строки, описывается так: '\n', горизонтальная табуляция – '\t'. Перечень основных специальных символов приведен в таблице 2.3. Специальные символы Таблица 2.3.
Целые константы Эти константы не имеют десятичной точки и порядка числа. В программировании очень часто используются числа, записанные в других системах счисления - двоичной, восьмеричной и шестнадцатеричной. Для двух последних систем в языке Си есть специальная форма записи: – для восьмеричных целых констант перед числом записывается ноль, и далее используются цифры 0…7; – для шестнадцатеричных целых констант перед числом устанавливаются два символа 0х и далее используются цифры 0... 9, а также буквы латинского алфавита A, B, C, D, E, F обозначающие соответственно числа от 10 до 15. Примеры целых констант: восьмеричные: 01 077 012340 шестнадцатеричные: 0х51 0х6А0 0xF59В Вещественные константы на языке Си по умолчанию воспринимаются программой как числа типа double. Их можно записать в двух формах: – в виде числа с десятичной точкой, например, 0.1, 15.189; – в научном виде (экспоненциальной форме), в котором вместо показателя основания записывается символ Е (или е), например: 1.1Е–10, –5е2 (что эквивалентно математической форме записи чисел 1.1×10–10 и –5×102). Различие между числами float и double состоит не только в большем диапазоне последних, но и в более точном значении чисел типа double – верными являются 15...16 значащих цифр. 2.6. Макроопределения Наряду с использованием в тексте программ констант в языке Си существует возможность применения макроопределений (макросов). Макроопределение устанавливает соответствие между именем и определённым значением. Для использования макросов существует несколько предпосылок. Если в программе используется одна и та же константа несколько раз в различных местах программ, то становится желательным использовать соответствующее макроопределение. Другой вариант применения макросов - использование хорошо понимаемых имен.
В общем случае форма записи макроопределения следующая: #define <ИмяМакроса> <3аменяемоеВыражение> где <ИмяМакроса> – любое разрешенное имя переменной, при этом желательно использовать заглавные буквы (что облегчает чтение программы). Примеры макросов: #define NUNBER 1OO #define LEFT 75 #define RIGHT 77 #define ENTER 13 #define SPACE 0x20 #define PI 3.14159 После определения этих макросов в заголовке, в тексте программы можно использовать имена NUMBER, LEFT, RIGHT и т.д. На этапе создания исполняемого файла (точнее в фазе препроцессора, выполняемой до компиляции) происходит замена имен макросов на соответствующие им значения. Например, если в тексте программы встречаются имена NUMBER, то происходит замена этого имени на значение 100. 2.7. Преобразование типов данных Исходно предполагается, что пользователь правильно использует типы констант и переменных. Что произойдет, если в выражениях присутствуют данные различных типов? В этом случае язык Си выполняет автоматическое приведение типов данных. Например, какое число будет записано в переменной а после инициализации int а=11.54; Так как переменная а определяется как переменная целого типа, то дробная часть вещественной константы 11.54 будет отброшена без округления и в ячейке переменной а будет записано целое число 11. То же самое произойдет, т.е. не будет учитываться дробная часть числа, если исполнить следующие операторы: float i; i=1/10; Это происходит, потому что в начале вычисляется правая часть выражения, а она содержит только целые константы 1 и 10, следовательно, результат тоже будет целое число: 1/10=0, а не 0.1 как ожидалось. Окончательно переменной i будет присвоено значение 0 и это несмотря на то, что она определяется вещественной. В общем случае при расчете арифметических выражений приведение типов данных в языке Си происходит следующим образом: 1) все переменные типа char преобразуются в тип int, переменные типа float - в тип double. 2) для любой пары операндов (т.е. в результате вычисления, например, суммы или произведения двух чисел) происходит следующее преобразование: – если хотя бы один из операндов double, то и второй преобразуется в этот тип; – если хотя бы один из операндов long, то и другой преобразуется в long; – если хотя бы один из операндов unsigned, то и другой преобразуется в unsigned. 3) конечный результат после операции присваивания приводится к типу переменной в левой части выражения. Рассмотрим пример вычисления арифметического выражения: char а=25, b=20; int i,j, long k; double d=l.55; i=a*b; k=10000*b; j = b*d; printf(“i=%d k=%ld j=%d”,i,k,j); При вычислении значения переменной i хотя обе переменные имеют тип char и как будто бы результат перемножения должен выйти за максимальные размеры, но по первому правилу обе переменные приводятся к целому типу. В этом случае результат за допустимые пределы не выйдет i=25*20=500. Для второй переменной k целого типа результат выходит за пределы целого, хотя переменная k объявлена типа длинного целого, поэтому результат перемножения будет неверный. Чтобы исправить эту ошибку необходимо строчку переписать следующим образом:
k=(long)10000*b; Для третьей переменной j результатом перемножения будет вещественное число двойной точности, при присвоении этого результата происходит приведение типа (double)®(int) и при этом происходит потеря дробной части полученного произведения. пределы. Задания для решения 2.8.1. Составьте программу, в которой объявляются две целые переменные a1 и a2, вещественная переменная b и переменные типа символ c и d. Переменная a2 инициализирована значением 10. 2.8.2. Найдите ошибки в приведенной программе #include <conio.h> #include <studio.h> void main() { int printf=5; /* объявление целой переменной */ long number-one; объявление переменной типа длинное целое double f=1e, scanf=3.14;/* объявление вещественных переменных */ char if_else='a', red%bull=100;/* объявление переменных типа символ */ unsigned float a=5, void=1.e-10;;/* объявление вещественных переменных */ getch(); /* ожидание нажатия любой клавиши */ } 2.8.2. Напишите программу, в которой вводится переменная типа символ, она инициализируется значением 125. Прибавьте единицу к переменной и выведите новое значение переменной на экран. Повторите эти операции (увеличения на единицу и вывода на экран) еще 3 раза. Какие значения переменной будут выведены? Объясните результат. 2.8.4. Составьте программу, в которой сообщение "Привет мир" на экран бы выводилось в кавычках. 2.8.5. Запишите в тетради с указанием всех пробелов и созданных новых строк, что будет выведено на экран следующими функциями (символ V означает символ пробела): printf(“Это\nVПростоVV\nСтрока\n\n”); printf(“H\nVE\nVVL\nVVVL\nVVVVO\n”); printf(“\t\tИванов\n\tПетров\n\Сидоров\n”);
ФУНКЦИИ ВВОДА-ВЫВОДА
|
||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-15; просмотров: 788; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.66.147 (0.01 с.) |