Совместимость типов.
Что будет, если переменной одного типа попытаться присвоить значение другого типа? Машина постарается разумным образом преобразовать значение к типу переменной.
Приведем пару примеров.
Пример 1.
int i;
i=5.6;
Результат i=5.
Пример 2.
float x;
x=5/2;
Результат x=2.0;
Пример 3 (содержательный).
Переменной целого типа можно присваивать значение символьного типа.
int x;
x=getch();
printf(“x=%d, %c”,x,x);
Введем A.
Получим x=65,A
65 – это ASCII – код буквы А.
Enter – 13, Esc – 27, пробел – 32 и т.п.
Нажимая на разные клавиши, можно узнать их ASCII – коды.
Можно распечатать все ASCII – коды
for(i=0;i<256;i++){
printf(“%d %c \n”,i,i);
getch();
}
48-57 – коды цифр 0-9
65-90 - латинские буквы A-Z
97-122- латинские буквы a-z
128-159 – русские буквы А-Я
160-175,
224-239 – русские буквы а-я
Помимо этого в таблице кодов присутствуют символы псевдографики, интеграл, карточные масти и т.п.
Есть некоторые клавиши, нажатие на которые приводит к появлению двух кодов.
Пример.
int x,y;
x=getch();
y=getch(0;
Если нажмем ↑, то получим x=0, y=72.
Использовать все это можно в программах, в которых нужно организовать управление процессом.
Упр. Написать простое меню пользователя.
Выражения. Константы. Операции.
Выражение – комбинация операндов и операций, задающая порядок вычисления некоторого значения.
Операнд – это константа, переменная или выражение.
Константы – это неизменяемые величины. Различают целые, вещественные, символьные и строковые константы. Компилятор по внешнему виду константы относит ее к одному из типов.
Примеры констант.
12 |
Обычное целое число |
012 |
Восьмеричное целое число |
0x12 |
Шестнадцатеричное целое число |
12L |
Число типа long |
3.14 |
Константы типа double |
.75 |
|
25. |
|
5E10 |
|
1.1e-6 |
|
3.14F |
Константа типа float |
10UL |
Константа типа unsigned long |
‘A’ |
Символьные константы |
‘\n’ |
|
‘\”’ |
|
“Вася” |
Строковые константы |
“Не курите сигареты \”Прима\”!” |
Маленький комментарий к последним примерам.
Строка “Вася” состоит из пяти символов – ‘В’,’а’,’с’,’я’,’\0’.
Последовательности символов, начинающиеся с обратной косой черты, называются управляющими последовательностями (или escape - последовательностями). Управляющая последовательность интерпретируется как одиночный символ.
Примеры управляющих последовательностей.
\a |
Звуковой сигнал |
\b |
Возврат на шаг |
\n |
Перевод строки |
\r |
Возврат каретки |
\t |
Горизонтальная табуляция |
\v |
Вертикальная табуляция |
\\ |
Обратная косая черта |
\’ |
Одинарная кавычка |
\” |
Двойная кавычка |
\? |
Вопросительный знак |
\0ddd |
Восьмеричный код символа |
\0xddd |
Шестнадцатеричный код символа |
Операции делятся на унарные (один операнд), бинарные (два операнда) и тернарную (три операнда).
Запишем основные операции и поговорим про некоторые из них.
Операции записаны в порядке убывания приоритета, операции с разными приоритетами разделены чертой.
Операция |
Краткое описание |
Унарные операции |
|
++ -- sizeof ~ ! - + & * new delete (type) |
Увеличение на 1 Уменьшение на 1 Размер Побитовое (поразрядное) отрицание Логическое отрицание Унарный минус Унарный плюс Взятие адреса Разадресация Выделение памяти Освобождение памяти Приведение типа |
Бинарные и тернарная операции |
|
* / % |
Умножение Деление Остаток от деления |
+ - |
Сложение Вычитание |
<< >> |
Сдвиг влево Сдвиг вправо |
< <= > >= |
Меньше Меньше или равно Больше Больше или равно |
== != |
Равно Не равно |
& |
Побитовое И |
^ |
Побитовое исключающее ИЛИ |
| |
Побитовое ИЛИ |
&& |
Логическое И |
| | |
Логическое ИЛИ |
? |
Условная операция (тернарная) |
= *= /= %= += -= <<= >>= &= |= ^= |
Присваивание Умножение с присваиванием Деление с присваиванием Остаток от деления с присваиванием Сложение с присваиванием Вычитание с присваиванием Сдвиг влево с присваиванием Сдвиг вправо с присваиванием Побитовое И с присваиванием Побитовое ИЛИ с присваиванием Побитовое исключающее ИЛИ с присваиванием |
, |
Последовательное вычисление |