Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Переменные. Основные типы данных. Форматный ввод-вывод






Любая программа, суть которой не есть вывод на экран некоторой текстовой информации, содержит описание переменных. Переменная - это пара “имя” - “значение”. Имени соответствует адрес участка памяти, выделенной переменной, а значением является содержимое этого участка. Именем переменной служит идентификатор. В С идентификатор - это последовательность из букв латинского алфавита, десятичных цифр и символов подчеркивания, начинающаяся не с цифры. Прописные и строчные буквы различаются. Примеры идентификаторов:

 

i, i2, i_2, stroka, STROKA, F_I_O

 

Каждая переменная и каждое выражение в программе имеет тип, определяющий операции, которые могут над ними производиться. Все типы языка С делят на основные и производные. Переменные типизируются с помощью описаний. Для описания переменных основных типов используют ключевые слова, содержащиеся в таблице 2.

Описание переменных заданного типа имеет следующий формат:

 

тип имя1 [=иницал._выражение1], имя2 [=иницал._выражение2], …;

 

где

тип– один из основных типов (таблица 2);

имя – идентификатор;

инициал._выражение – необязательный инициализатор, определяющий начальное значение соответствующего объекта.

Таблица 2. Основные типы данных

Тип данных Диапазон значений
char (символьный) -128…127
short (короткий целый) -32768…32767
int (целый) -32768…32767
long (длинный целый) -2147483648…2147483647
unsigned char (беззнаковый символьный) 0…255
unsigned int (беззнаковый целый) 0…65535
unsigned long (беззнаковый длинный целый) 0…4294967295
unsigned short 0…65535
float (вещественный) 3.4Е-38…3.4Е+38
double (вещественный с удвоенной точностью) 1.7Е-308…1.7Е+308
long double (длинный вещественный с удвоенной точностью) 3.4Е-4932…3.4Е+4932

 

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

Кроме типов, приведенных в таблице 2, к основным типам относят перечислимый тип enum и тип void (отсутствие значения) (подробнее – в лекциях).

Из основных типов с помощью операций *, &, [], () и механизмов определения структурированных типов (классов, структур, объединений) можно конструировать множество производных типов, которые будут рассмотрены позднее.

Для определения размера (в байтах) области памяти, выделяемой для переменной определенного типа, в С используется операция sizeof. Разрешены два формата операции:

 

sizeof выражение

или

sizeof (тип данных).

 

sizeoff не вычисляет значения выражения, а только определяет его тип, для которого затем вычисляется размер. Например, пусть определена переменная int i. Тогда операция sizeof(i) определит, сколько байт выделено для переменой i.

Соотношение между основными типами можно записать так:

 

1==sizeof(char) < = sizeof(short) < = sizeof(int) < = sizeof(long) < =sizeof(float) < = sizeof(double)

Для вывода информации используется функция printf(). Ее описание содержится в заголовочном файле stdio.h. При этом имеется возможность форматировать данные, то есть влиять на их представление на экране дисплея. Оператор вызова функции можно представить так:

 

printf(форматная_строка, список аргументов)

 

Форматная строка записывается в двойных кавычках и может включать произвольный текст, управляющие символы и форматные спецификаторы. Они предназначены для управления формой внешнего представления значений аргументов функции printf() и начинаются с символа %. В список аргументов включают объекты, значения которых должны быть выведены из программы. Это выражения, переменные, константы и функции. Количество аргументов и их типы должны соответствовать последовательности спецификаций преобразования в форматной строке. Список аргументов может отсутствовать. Например:

 

printf(“\nHello, world! \n”) //здесь нет аргументов, а в форматной

//строке содержится два управляющих символа \n

 

Обобщенный формат форматного спецификатора:

 

%флажки ширина_поля.точность модификатор спецификатор

 

Здесь обязательными являются только два элемента – символ ’%’ и спецификатор.

Ширина_поля –целое положительное число, определяющее длину (в позициях на экране) представления выводимого значения.

Точность-целое положительное число, определяющее количество цифр в дробной части представления вещественного числа (с фиксированной точкой) или его мантиссы (при использовании представления с плавающей точкой)

Модификаторы. Возможные значения:

‘-‘ – выравнивание выводимого значения по левому краю

Модификатор ‘0’ – при использовании модификатора ширины поля пустые позиции слева от значения заполняются пробелами. Использование модификатора ‘0’ позволяет заменить их на нули.

Модификатор ‘l’ позволяет вывести на экран значения типа long int и double

Модификатор ‘h’ позволяет вывести на экран короткие значения (значения с модификатором short)

Спецификаторы. В задачах будем использовать следующие спецификаторы:

d- целое десятичное число (тип int)

c-символ

s-строка

u- беззнаковое целое

f- вещественное число с точностью до 6-го знака

e- вещественное число в экспоненциальной форме с точностью до 6-го знака

g-вещественное число (аналог f или e, но без лишних нулей в конце)

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

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

1. printf() работает с переменными, константами и выражениями, в то время как scanf() использует адреса переменных. Более подробно работа с адресами будет рассмотрена позднее. Важно запомнить два требования:

· Если нужно ввести некоторое значение и присвоить его переменной одного из основных типов, то перед именем переменной требуется писать символ &.

· Если требуется ввести значение строковой переменной, то использовать символ & не нужно.

2. Различия в форматных командах:

· Не используется спецификатор %g.

· Спецификаторы %f и %e работают абсолютно одинаково.


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

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал