Таблица 2 — Типы данных языка Си
Вид | Тип данных | Размер, байт | Минимальное значение | Максимальное значение |
Цело-численные | [signed] char | 1 | –128 | 127 |
unsigned char | 0 | 255 | ||
[signed] short [int] | 2 | –32 768 | 32 767 | |
unsigned short [int] | 0 | 65 535 | ||
[signed] int | 2 или 4 | –32 768 | 32 767 | |
unsigned [int] | 0 | 65 535 | ||
[signed] int | –2 147 483 648 | 2 147 483 647 | ||
unsigned [int] | 0 | 4 294 967 296 | ||
[signed] long [int] | 4 | –2 147 483 648 | 2 147 483 647 | |
unsigned long [int] | 0 | 4 294 967 296 | ||
Вещест- венные | float | 4 | 8,4×10–37 | 3,4×10+38 |
double | 8 | 2,2×10–308 | 1,9×10+308 | |
long double | 10 | 3,4×10–4932 | 1,1×10+4932 |
Определение! Скаляр (от лат. scalaris — ступенчатый) — величина, каждое значение которой может быть выражено одним (как правило, действительным) числом; по отношению к вектору, который можно рассматривать как многомерную величину, скаляр — величина одномерная. |
9.3 Модификатор const
Объявление переменной может дополняться модификатором const:
const int size = 7; const float x = 17.3; |
Объявление переменной с модификатором const указывает на то, что значение не будет изменяться, т. е. фактически это еще один способ задания констант в программе (см. раздел 7).
10 Функция printf: вывод на экран
Одной из основных задач программирования является вывод в файл или на экран. Без вывода информации нет возможности узнать и проанализировать результаты работы программы. В Си весь вывод реализуется через внешние функции и макросы. Одной из наиболее универсальных и полезных функций вывода является printf. Для использования этой функции в программе необходимо подключить заголовочный файл stdio. h.
Функцию printf можно использовать для вывода любой комбинации символов, целых и вещественных чисел, строк, беззнаковых целых, длинных целых и беззнаковых длинных целых.
Типичный пример использования функции printf:
printf(“\nВозраст Васи - %d. Его рост - %.2f м.”, age, height); |
Предполагается, что целой переменной age (возраст) и вещественной переменной height (рост) присвоены какие-то значения.
Последовательность символов \n переводит курсор на новую строку. Последовательность символов «Возраст Васи – » будет выведена с начала новой строки. Символы %d — это спецификация для целой переменной. Вместо %d подставляется значение переменной age. Следующая за спецификацией последовательность символов «. Его рост – » выводится на экран сразу после значения переменной age. %.2f — это спецификация для вещественного значения, а также указание формата для вывода только двух знаков после десятичной точки. На место спецификации %.2f подставляется значение переменной height. И окончательная последовательность символов « м.» выводится на экран после значения переменной height.
Студенту на заметку! В блок-схеме оператору printf соответствует блок вывода:
В блоке пишется слово «Вывод» и перечисляются через запятую все переменные, выводимые на экран при помощи данного оператора. |
10.1 Специальные символы
Кроме \n, существуют и другие последовательности для вывода специальных символов на экран. Наиболее часто используемые из них приведены в таблице 3.
Таблица 3 — Наиболее часто используемые последовательности специальных символов
Спец. символ | Назначение |
\n | перевод курсора в начало следующей строки (конец строки) |
\t | горизонтальная табуляции |
\v | вертикальная табуляция |
\r | перевод курсора в начало текущей строки (возврат каретки) |
\b | возврат курсора на один символ |
\\ | один обратный слеш «\» |
\" | двойная кавычка |
\’ | апостроф |
\ooo | ooo — восьмеричный код выводимого символа |
\xhh | hh — шестнадцатеричный код выводимого символа |
\0 | нулевой символ (конец строки) |
Грамотное использование специальных символов позволяет делать выводимую на экран информацию более понятной и «читабельной».
10.2 Спецификация вывода
Как видно из рассмотренного выше примера, спецификации (правила форматирования значений при выводе) помещаются внутри выводимой строки. Вслед за этой строкой должны стоять нуль (если спецификаций не указано) или более переменных или выражений, разделенных запятыми. Каждой спецификации в операторе printf должна соответствовать переменная соответствующего типа. Если используется несколько спецификаций, то всем им должны соответствовать переменные того типа, который задается спецификацией.
Более формально полную спецификацию вывода можно определить следующим образом (поля в квадратных скобочках — необязательные):
%[флаги][ширина][.точность][l]символ_формата |
Значения флагов:
- выравнивание по левому краю
+ печатать знак выводимого значения, как плюс, так и минус
(пробел) для неотрицательных значений
вместо знака плюс печатать пробел
0 заполнение слева нулями вместо пробелов
Ширина — минимальный размер поля вывода (минимальное количество выводимых символов). Другими словами, это минимальное количество знакомест, отводимых на экране под вывод переменной. Если в значении переменной меньшее количество символов, то они будут выведены на экран с учетом значений флагов. Если флаги не заданы, то по умолчанию выравнивание осуществляется по правому краю, а заполнение остальных знакомест осуществляется пробелами.
Точность:
- для целых чисел — минимальное число выводимых цифр (если выводимое значение имеет меньше цифр, чем задано, то дополняется нулями слева);
- для вещественных чисел — число цифр после десятичного разделителя (по умолчанию 6 знаков);
- для строк — максимальное число выводимых символов.
Символ l — используется для указания длинных типов данных (long при вводе и выводе, double при вводе).
Символ формата служит для указания типа выводимого значения:
с одиночный символ
s строка (массив символов)
d или i целое число в десятичном виде
o целое число в восьмеричном виде
u беззнаковое целое число в десятичном виде
x или X целое число в шестнадцатеричном виде
f вещественное число
в виде с фиксированной точкой (0.123456)
e вещественное число
в экспоненциальном виде (1.23456e+3)
g вещественное число
в наиболее коротком виде из f или e
Таблица 4 — Простейшие спецификации ввода-вывода для основных типов данных языка Си
Тип | Спецификация |
int | %d |
unsigned | %u |
long | %ld |
unsigned long | %lu |
float | %f |
double (вывод) | %f |
double (ввод) | %lf |
Внимание! Частая ошибка — отсутствие соответствующей переменной для каждой спецификации в строке printf. Другая частая ошибка — несоответствие типа переменной спецификации. Обычно это происходит тогда, когда в строке много спецификаций и программист путает порядок переменных. |
Листинг 3 — Пример использования оператора printf
/* printf. c – пример использования оператора printf. */ #include <stdio. h> #include <locale. h> #include <conio. h> #define sqr(x) ((x) * (x)) #define pi 3.14159265 int main() { float x = 2.5; int i = 11; int j = 119; setlocale(LC_ALL, “”); printf(“Значение квадрата 2.5 = %10.4f\n”, sqr(x)); printf(“Число пи = %10.4f\n ”, pi); printf(“Значение 2 * пи = %10.4f\n\n ”, 2.0 * pi); printf(“Шестнадцатеричный вид числа 11 = %x\n ”, i); printf(“Шестнадцатеричный вид числа 119 = %x\n ”, j); printf(“Восьмеричный вид числа 119 = %o\n”, j); getch(); return 0; } |

|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |




