Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Константы




Объявление переменных

 

Основная форма объявления переменных имеет вид

 

тип <список_переменных>;

Здесь type должен быть одним из существующих в С типов переменных, а <список_переменных> может состоять из одной или нескольких переменных, разделенных запятыми. При объявлении переменных компилятор выделяет место в памяти компьютера, необходимое для размещения переменной данного типа. Примеры объявлений переменных:

 

int х, у, z; float radius; unsigned char ch; long double integral;

 

Когда переменная объявляется в программе, очень большое значение имеет то, в каком месте программы она объявляется. Правило, которое оп­ределяет, где переменная может быть использована, зависят от того, где пе­ременная была объявлена, и называется правилом видимости (scope rules).

В языке С могут быть три места, где переменная может быть объявлена. Во-первых, вне каких-либо функций, в том числе и main(). Такая пе­ременная называется глобальной (global) и может использоваться в любом месте программы (за исключением глобальных статических переменных, о которых мы поговорим чуть позже). Во-вторых, переменная может быть объявлена внутри блока, в том числе внутри тела функции. Объявленная та­ким образом переменная называется локальной (local) и может исполь­зоваться только внутри этого блока. Такая переменная неизвестна вне этого блока. Наконец, переменная может быть объявлена как формальный пара­метр функции. Кроме специального назначения этой переменной для пе­редачи информации в эту функцию и места ее объявления переменная мо­жет рассматриваться как локальная переменная для данной функции..

Рассмотрим пример объявления переменных в разных местах программы:

#include <conio.h>

#include <stdio.h>

/♦Пример9. */

/* пример объявления переменных */

char ch; /* глобальная переменная ch */

main()

{

int n; /* локальная переменная п */

printf("BBeflHTe символ:");

ch=getche(); /* использование глобальной переменной */

printf("BBeflHTe количество символов в строке:");

scanfC%d", &n);

print_str(n); }

print_str(int m) /* формальный параметр m */

{

int j; /* локальная переменная j */

for(j=0;j<m;j++)

printfi["%c\n", ch); / /* использование глобальной переменной ch */ }

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

 

 

В языке С константы представляют фиксированную величину, которая не может быть изменена в программе. Константы могут быть любого базо­вого типа данных.

Примеры констант:

Тип данных Константа

char 'a', 'W, '9'

int 1,123,-346

unsigned int 60000

long int 75000, -27, 5L

short int 10,12,-128

float 1 123.23,4.34E-3,4E+5

double | 123.23, 1231231 i, -0.987

 

К какому типу относится константа и - к типу спаг, ни, unsigneu или к другому? Для языка С это почти не играет никакой роли. В то же время для языка C++ с его жесткой проверкой типов параметров функций это может сыграть очень большую роль.

Существуют правила определения типа констант

 

Строковые константы (strings) также играют в языке С важную роль. Строковая константа или просто строка представляет собой набор симво-юв, заключенный в двойные кавычки. Например, строковая константа "Это лрока". Особенностью представления строковых констант в языке С явля­ется то, что в памяти компьютера отводится на 1 байт больше, чем требует­ся для размещения всех символов строки. Этот последний байт заполняется нулевым значением, т. е. байтом в двоичной записи которого одни нули.)тот символ так и называется - нулевой байт и имеет специальное обозна-«ение '\0\

Нельзя путать строковые константы с символьными константами. Так а" - это строковая константа, содержащая одну букву, в то время как 'а' - символьная константа, или просто символ. Отличие "а" от 'а' в том, что строка "а" содержит еще один символ '\0' в конце строки; "а" занимает в па­мяти 2 байта, в то время как 'а' - только 1 байт.

В языке С есть символьные константы, которые не соответствуют ни­какому из печатных символов. Так, в коде ASCII символы с номерами от нуля до 31 являются управляющими символами, которые нельзя ввести с клавиатуры. Для использования таких символов в языке С вводятся так на­зываемые управляющие константы (backslash charchter constans). Мы с ними "' уже встречались выше в функции printf(). Фрагменты программы а) и б) эк­вивалентны по своему действию:

 

Управляющий символ Значение \Ъ BS, забой \f Новая страница, перевод страницы \п Новая строка, перевод строки V Возврат каретки \t Горизонтальная табуляция \v Вертикальная табуляция \" Двойная кавычка V Апостроф \\ Обратная косая черта \0 Нулевой символ, нулевой байт \а Сигнал \N Восьмеричная константа \xN Шестнадцатеричная константа V? Знак вопроса

 

 

Инициализация переменных '

 

■ ' После того как переменная объявлена, ей рано или поздно будет при своено значение. Язык С предоставляет пользователю возможность приев о ить значение переменной одновременно с процессом объявления перемен ной. Основная форма инициализации переменной имеет вид 1

тип имя_переменной = константное выражение;

СП

Например: int pr=24, char c='c', ch='O’;

Объявление переменной приводит к выделению памяти в размере, не­обходимом для размещения переменной данного типа. При этом память, ко­торая выделяется, никак не очищается. Инициализация переменной приво­дит к тому, что одновременно с выделением памяти в эту память заносится значение инициализации. Глобальные и статические переменные всегда инициализируются либо нулем, либо значением инициализатора.

 

Функции printf() и scanf()

 

Функции printf() и scanf() осуществляют форматированный ввод и вывод на консоль. Форматированный ввод и вывод означает, что функции могут читать и выводить данные в разном формате, которым вы можете управлять.

Функция printf() имеет прототип в файле STDIO.H int printf(char *управляющая_строка,...);

Управляющая строка содержит два типа информации: символы, которые непосредственно выводятся на экран, и команды формата (спецификаторы формата), определяющие, как выводить аргументы. Команда формата начи­нается с символа % за которым следует код формата. Команды формата U следующие: ь 1

%с- символ

%d - целое десятичное число,

%i - целое десятичное число,

%е - десятичное число в виде х.хх е+хх,

%Е - десятичное число в виде х.хх Е+хх,

%f - десятичное число с плавающей запятой хх.хххх,

%F - десятичное число с плавающей запятой хх.хххх,

%g - %f или %е, что короче,

%G - %F или %Е, что короче,

%о - восьмеричное число,

%s - строка символов,

%u - беззнаковое десятичное число,

%х - шестнадцатеричное число 5a5f,

%Х - шестнадцатеричное число 5A7F,

%% - символ %,

%р - указатель,

%n - указатель.

Кроме того, к командам формата могут быть применены модификаторы 1 и h, например:

%ld — печать long int,

%hu — печать short unsigned,

%Lf - печать long double.

Между знаком % и форматом команды может стоять целое число. Оно указывает на наименьшее поле, отводимое для печати. Если строка или число больше этого поля, то строка или число печатается полностью, игнорируя ширину поля. Нуль, поставленный перед целым числом, указывает на необходимость заполнить неиспользованные места поля нулями. Вывод printf("%05d", 15); даст результат 00015.

Чтобы указать число десятичных знаков после целого числа, ставится точка и целое число, указывающее на количество десятичных знаков. Когда такой формат применяется к целому числу или к строке, то число, стоящее после точки, указывает на максимальную ширину поля выдачи.

Выравнивание выдачи производится по правому краю поля. Если мы хо­тим выравнивать по левому знаку поля, то сразу за знаком % следует по­ставить знак минуса. В прототипе функции многоточием обозначен список аргументов - переменных или констант, которые следуют через запятую и подлежат выдаче в соответствующем формате, следующем по порядку.

Scanf() - основная функция ввода с консоли. Она предназначена для ввода данных любого встроенного типа и автоматически преобразует введенное число в заданный формат. Прототип из файла STDIO.H имеет вид

int scanf(char *управляющая_строка,...);

Управляющая строка содержит три вида символов: спецификаторы фор­мата, пробелы и другие символы. Команды или спецификаторы формата на­чинаются с символа %. Они перечислены ниже:

%с - чтение символа,

%d - чтение десятичного целого,

%i — чтение десятичного целого, %

%е - чтение числа типа float,

%h - чтение short int,

%о - чтение восьмеричного числа,

%s - чтение строки,

%х - чтение шестнадцатеричного числа,

%р - чтение указателя,

%n - чтение указателя в увеличенном формате.

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

Строка будет читаться как массив символов, и поэтому имя массива без индексов указывает адрес первого элемента.

Разделителями между двумя вводимыми числами являются символы | пробела, табуляции или новой строки. Знак * после % и перед кодом формата дает команду прочитать данные указанного типа, но не присваивать это значение. Так, I

scanf("%d%*c%d", &i, &j);

при вводе 50+20 присвоит переменной i значение 50, переменной j - значение 20, а символ + будет прочитан и проигнорирован.

В команде формата может быть указана наибольшая ширина поля, которая подлежит считыванию. К примеру, scanf("%5s", str);

указывает необходимость прочитать из потока ввода первые 5 символов. При вводе 123456789 массив str будет содержать только 12345,'остальные символы будут проигнорированы. Разделители: пробел, символ табуляции и символ новой строки - при вводе символа воспринимаются, как и все другие символы.





Поделиться с друзьями:


Дата добавления: 2015-05-10; Просмотров: 849; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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