Операции и операторы

Слайд 2

Основные операции Sizeof формат: sizeof ( ) примеры: sizeof(void*); sizeof double*

Основные операции

Sizeof
формат: sizeof (<имя-типа>) примеры: sizeof(void*);
sizeof <имя-объекта> double* a;
sizeof a;
Арифметические
бинарные: +, -, *, /,

% примеры: unsigned n, m;
унарные: +, - n % m;
операции возведения в степень в языке нет!
Отношения
бинарные: >, >=, <, <=, ==, != примеры: a==0 ⬄ !a
унарная: !
Логические связки
&& и || выражения с логическими связками вычисляются слева направо и вычисления останавливаются, когда результат становится ясен
Преобразования типа (кастинг)
формат: ( <имя-типа> ) <выражение> примеры: long a, b;
(char*) (a+b);
Слайд 3

Основные операции Инкремент и декремент формат: ++ инкремент -- декремент имеют

Основные операции
Инкремент и декремент
формат: ++ инкремент -- декремент имеют префиксную и постфиксную

формы
примеры: int x, n=10;
x = ++n; /* x = 11; n = 11; */ x = --n; /* x =9; n = 9; */
x = n++; /* x = 10; n = 11; */ x = n--; /* x = 10; n = 9; */
обработка массива Pascal: обработка массива Cи:
s[n] := p[m]; n := n +1; m := m +1; s[n++] = p[m++];
Побитовые
бинарные: &, |, ^, <<, >> примеры:
унарная: ~ инверсия
таблица истинности: int x = 07;
x << 3; сдвиг влево
x >> 1; сдвиг вправо
x = n & 017; маскирование
x = n | 017; установка битов
x = n ^ 017; сброс единиц
~x; инверсия битов
Слайд 4

Основные операции Присваивания n = n + 1; ⬄ n++; i

Основные операции
Присваивания
n = n + 1; ⬄ n++; i = i +

2; ⬄ i += 2; j = j * 3; ⬄ j *= 3;
Пусть @ - бинарная операция, тогда = @ @=
например: a = a >> 2; ⬄ a >>= 2;
Косвенная адресация, получение адреса
Примеры: char x; ptr = &x; int a[10];
char *ptr; *ptr ⬄ x; a[i] ⬄ *(a+i)
*(&x) ⬄ x;
Условная операция
формат: ? : /* если истинно, тогда результат есть иначе */
пример: if (a > b) z = a;
else z = b; ⬄ z = (a>b) ? a : b;
Операция «запятая»
формат: , , , … ,
выражения вычисляются слева направо, результат операции есть значение последнего вычисленного выражения
Слайд 5

Основные операторы Условный оператор формат: if ( ) [ else ]

Основные операторы

Условный оператор
формат: if (<выражение>)
<оператор-1>
[ else
<оператор-2> ]
примеры:
множественный выбор:
Если истинно (выражение-i), то выполняется

<оператор-i> и вся работа заканчивается
Если ни одно из (выражений-i) не истинно, то выполняется <оператор-n>

if (a)
if (b) a=1
z = a; b=0
else z=?
z = b;
if ( g==0 ) … ⬄ if ( !g ) …
If ( h!=0 ) … ⬄ if ( h ) …

If ( выражение-1 ) <оператор-1>
else if (выражение-2 ) <оператор-2>
else if (выражение-3 ) <оператор-3>
…………………………
else if (выражение-n-1 ) <оператор-n-1>
else <оператор-n>

Слайд 6

Основные операторы Операторы цикла формат: while ( выражение ) цикл с

Основные операторы
Операторы цикла
формат: while ( выражение ) <оператор> цикл с предусловием
do <оператор>

while ( выражение ) с постусловием, используется редко
for ( выражение-1 ; выражение-2 ; выражение-3 ) <оператор>

<выражение-1>;
while ( выражение-2 ) {
<оператор>
<выражение-3>; }
оператор break вызывает немедленный выход из охватывающего его цикла
оператор continue завершает текущую итерацию и переходит к проверке условного
выражения в операторах «while» и «do» и к вычислению (выражения-3) в операторе «for»
примеры:

for ( ; ; ) { …. } бесконечный цикл
for ( i=0; ifor ( i=n; i--; ) …… обработка массива в обратном направлении
int main() { цикл почти всегда можно
int c; (но не всегда нужно) заменить рекурсией
putchar ( c = getchar ( ) );
if ( c != EOF ) main(); что делает эта функция main ?
}

Слайд 7

Основные операторы Операторы цикла. Примеры Обработка только положительных элементов массива for

Основные операторы
Операторы цикла. Примеры

Обработка только положительных элементов массива
for ( i=o; i

i++ ) {
if ( a[ i ] < 0 ) continue;
<обработка положительных элементов>
}

Реверсирование строки на месте
reverse (char* s) {
int c, n, m; два индекса бегут
for ( n=o, m=strlen(s) -1; n c = s[n]; s[n] = s[m]; s[m] = c; } переставляем символы
}

Нужен ли оператор go to ?
for ( … ) { например, для аварийного выхода
for ( … ) { из глубоко вложенных циклов?
while ( … ) {
if ( … ) goto error; нет, не нужен, т.к. в таких ситуациях
} } } применяются объекты-исключения

Слайд 8

Основные операторы Переключатели формат: switch ( ) { case : case

Основные операторы
Переключатели
формат: switch ( <целое-выражение> ) {
case <константа-1> : <оператор-1>
case <константа-2> :

<оператор-2>
……………………………….
case <константа-k> : <оператор-k>
default: <оператор-n> }
пример:

Подсчет цифр, пробелов и прочего
int digits, whites, others, c;
digits = whites = others = 0;
while ( ( c = getchar() ) != EOF )
switch ( c ) {
case ‘0’ :
case ‘1’ :
…………..
case ‘9’ : digits++; break; это цифра
case ‘ ‘ : whites++; break; это пробел
default : others++; это прочее
}