Алфавит и идентификаторы языка Си
В алфавит языка Си входят:
- прописные и строчные буквы латинского алфавита;
- цифры;
- специальные знаки “ , {} | [ ] ( ) + - / % \ ; ‘ . : ? < = > _ ! & * # ~ ^
- неизображаемые символы, например, пробел, табуляция.
Идентификатор: Последовательность букв, цифр, символов подчеркивания, начинающаяся с буквы или символа подчёркивания, считается идентификатором языка Си. Например, Lab_1, size22, _min, TIME, time.
Прописные и строчные буквы различаются, т.е. два последних идентификатора различны. Идентификаторы могут иметь различную длину, но компилятор учитывает не более 31-го символа.
Переменные
Переменная – это именованная область памяти. Отличительная особенность переменной – возможность связывать с её именем различные значения, совокупность которых определяется типом переменной. Каждая переменная перед её использованием в программе должна быть определена, т.е. для неё должна быть выделена память. Размер участка памяти зависит от типа переменной.
Основные типы переменных и их предельно допустимые значения:
char -128…127 1 байт
unsigned char 0…255 1 байт
int -32768…32767 2 байта
unsigned int 0…65535 2 байта
long -2147483648…2147483647 4 байта
unsigned long 0…4294967295 4 байта
float 3.4E-38…3.4E+38 4 байта
double 1.7E-308…1.7E+308 8 байт
long double 3.4E-4932…1.1E+4932 10 байт
Операции
Операция присваивания: “=”.
Аддитивные операции: “ +”,”-“;
Мультипликативные: “*”,”/”,”%”; % - получение остатка от деления,
“/” - целочисленное деление (остаток отбрасывается);
Логические операции: && (and), || (or), ! (not);
Операции отношения: == (равно), != (не равно), < (меньше), > (больше), <=
(меньше или равно), >= (больше или равно);
Операции модификации: *= присваивание после умножения (p *= 2;
эквивалентно p=p*2;).
/= присваивание после деления (p /= 2; эквивалентно
p=p/2; ).
+= присваивание после суммирования (a += b; эквивалентно a=a+b;).
-= присваивание после вычитания (a -= b; эквивалентно a=a-b;).
%=присваивание после деления по модулю (n %= 3; эквивалентно n=n % 3;).
a++ (--) постфиксное изменение (a++; эквивалентно a=a+1; значение а
сначала используется, затем изменяется).
++(--)a префиксное изменение (++a; эквивалентно a=a+1; значение а сначала изменяется, затем используется).
Операторы ввода/вывода
- Оператор вывода :
printf(<форматная строка>, переменные);
Форматная строка может включать текст для вывода на экран, спецификаторы формата, управляющие символы. Список переменных должен быть согласован со спецификаторами формата по типу и количеству.
Спецификатор формата:
%[флаг] [ширина] [. точность] [l]
[флаг] : “-“ или “+” ; ”-“ выравнивает текст вывода по левому краю; “+” выводит знак для положительных и отрицательных значений;
[ширина] : минимальный размер поля вывода;
[.точность] : для вещественных чисел количество знаков после десятичной точки;
[l] : для вывода целых чисел типа long;
При выводе переменных различных типов используются следующие форматы:
%c – char;
%d – целое десятичное:
%u – беззнаковое целое;
%o – целое восьмеричное;
%x – целое шестнадцатеричное;
%s – строка;
%f – вещественное число с фиксированной точкой;
%e – вещественное число в экспоненциальной форме;
%g – вещественное число ( выводится в формате %f или %e , что более компактно).
Управляющие символы:
\n – перевод строки;
\t – табуляция;
\v – вертикальная табуляция;
\b – возврат на 1 символ;
\r – возврат на начало строки;
\a – звуковой сигнал.
- Оператор ввода :
scanf(<форматная строка>, адреса переменных);
В отличие от printf () форматная строка должна включать в себя только форматы (если их несколько, они разделяются пробелами). Количество форматов определяется количеством переменных. Форматы при вводе переменных различных типов такие же, как и при выводе. Перед именами строк и массивов операция взятия адреса & не ставится, т.к. имя строки или массива само определяет их адрес.