ЗАМЕЧАНИЕ
Обратите особое внимание на запись сравнения на равенство — чтобы
отличить ее от присваивания, в Си и унаследованных от него языках — С++,
С#, Java и др. используются два стоящих рядом знака равенства! Начинающие
программисты из-за этого могут допускать весьма трудноуловимые в ошибки,
поскольку в Си допускается присваивание внутри условия.
В Паскаль-семействе языков программирования проверка на равенство
записывается с помощью одного знака равенства, а присваивание — как
:=
. Однако вспомним, что язык программирования Си создан системными
программистами и ему присуща лаконичность почти во всем. В
программах присваивания встречаются гораздо чаще, нежели проверки на
86
равенство, и поэтому для экономии символов и времени программиста
присваивание записывается с помощью одного знака равенства, а
проверка — двумя идущими подряд знаками. Надо заметить, что и запись
отношения неравенства отличается от принятой в Паскале <>, вместо
этого используется !=, что по духу соответствует обозначению
логического отрицания в Си.
Знаки для записи поразрядных логических операций:
&
—
поразрядное логическое И;
|
—
поразрядное логическое ИЛИ;
~
—
поразрядное отрицание;
^
—
поразрядное логическое исключающее ИЛИ.
В языке есть также и другие операции:
++
—
инкремент (увеличение на единицу);
--
—
декремент (уменьшение на единицу);
<усл> ? <в1> : <в2> — условная операция;
Z=
—
набор операций, где Z — любая бинарная операция;
>>
—
побитовый сдвиг вправо;
<<
—
побитовый сдвиг влево.
Очень удобными являются операции инкремента и декремента, которые
можно рассматривать как сокращенные формы записи выражений x=x+1
и x=x-1. Аналогичным образом используется сокращенная запись вида
z+=2
вместо z=z+2, y*=5 вместо y=y*5 и т. д. Здесь ярко проявляется
происхождение Си — системные программисты стремились к краткости
записи.
Для условной операции, или условного выражения, довольно экзотического
и редко встречающегося в других языках программирования, результатом
становятся значение
<в1>, использованное в ее записи в случае, если
первое выражение
<усл> истинно, и значение <в2> — если значение
первого ложно. Например,
y = (a>=b) ? a : b
; /* если а >b — y=a, иначе y=b*/
приводит к присвоению y значения максимума среди
а и b.
Контрольные вопросы и упражнения
1.
Каковы принципы записи идентификаторов в языке программирования
87
Си?
2.
Какие базовые типы данных языка программирования Си вы знаете?
3.
Каков принцип использования логических значений в языке
программирования Си?
4.
Является ли Си языком со статической или динамической типизацией?
Как записывается объявление переменных в языке программирования
Си?
5.
Как записывается оператор присваивания в языке программирования
Си?
6.
Какие существуют и как записываются арифметические операции в
языке программирования Си?
7.
Какие существуют и как записываются логические операции в языке
программирования Си?
8.
Какие операции, кроме арифметических и логических, возможны в Си?
Приведите примеры.
9.
Каково условное выражение языка программирования Си? Приведите
пример использования.
10.
Что такое явное преобразование типов в Си? Приведите пример.
Принципы ввода-вывода в языке Cи
Говоря о принципах организации ввода-вывода информации в языке
программирования Си, напомним, что сам язык не включает в себя
операторы ввода-вывода, а все поддерживающие эти процессы операции
осуществляются с помощью стандартных функций. Этот подход был
применен разработчиками с целью достижения легкости переносимости
между различными платформами.
В языке Си, поскольку он генетически связан с операционной системой
UNIX, поддерживается концепция стандартных потоков ввода (input),
вывода (output) и ошибок (errors). По умолчанию стандартный ввод
связан с клавиатурой компьютера, стандартный вывод — с экраном
дисплея, поток ошибок — также с экраном. Стандартные операции ввода-
вывода поддержаны библиотечными функциями, описание которых
содержится в заголовочном файле stdio.h. Это прежде всего printf
для форматного вывода и scanf для ввода информации. Функция printf
имеет следующий синтаксис:
printf("<
форматная строка>"[,<список переменных>]);
Список переменных может отсутствовать, в этом случае printf
используется просто для вывода на экран текстовой строки. Форматная
88
строка представляет собой строку символов, которые выводятся на экран,
наряду с форматными символами, не выводимыми, но описывающими
формат печати переменных (если они есть). Исторически форматный
вывод ведет свою родословную еще от языка Фортран.
Достарыңызбен бөлісу: |