Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по дисциплине АОП.docx
Скачиваний:
66
Добавлен:
24.04.2019
Размер:
2.91 Mб
Скачать

Int lower, upper, step;

char c, line[1000];

char esc = ‘\\’;

int limit = MAXLINE + 1;

float eps = 1.0e-05;

К объявлению любой переменной можно добавить модификатор const, который придаст этой переменной свойство “read only” (только для чтения). Попытка присвоить такой переменной (или элементу массива) нового значения вызовет ошибку компиляции:

const double e = 2.71828182845905;

const char msg[] = “Warning: “;

Вопрос №16. Определение понятий «операция» и «операнд». Классификация операций по числу операндов. Определение понятия «выражение».

Операции определяют преобразования, которые можно производить с объектами программы.

В зависимости от количества операндов, участвующих в одной операции, операции делятся на:

  • унарные (одноместные, применяются к одному операнду);

  • бинарные (двуместные, два операнда) и

  • тернарные (трехместные, три операнда).

В результате выполнения операции получается некоторое значение (которое можно использовать для последующих вычислений) и, возможно, изменяется значение одного из операндов.

Из операций конструируются более сложные объекты программы – выражения.

Вопрос №17. Арифметические операции.

операция

смысл

пример

+

сложение

x=3+2; y+z; x+y+2;

-

вычитание

3−2; int x=y−z; y−2−z;

*

умножение

int x=3∗2; int x=y∗z; x∗y∗2;

/

деление

float x=3/2; /∗ x=1 ∗/

float x=3.0/2 /∗x=1.5 ∗/

int x=3.0/2; /∗ x=1 ∗/

%

остаток от деления

int x=3%2; /∗ x=1 ∗/

int y=7;int x=y%4; /∗ x=3 ∗/

int y=7;int x=y%10; /∗ x=7 ∗/


Вопрос №18. Операции отношения.

Операции отношения сравнивают два операнда и выдают «булевский» результат («ложь» – 0, «истина» – отлично от 0)

операция

смысл

пример

>

больше

3>2; /∗ 1 ∗/

2.99>3 /∗ 0 ∗/

>=

больше или равно

3>=3; /∗ 1 ∗/

2.99>=3 /∗ 0 ∗/

<

меньше

3<3; /∗ 0 ∗/

’A’<’B’/∗ 1∗/

<=

меньше или равно

3<=3; /∗ 1 ∗/

3.99<3 /∗ 0 ∗/

==

равно

3==3; /∗ 1 ∗/

’A’==’a’/∗ 0 ∗/

!=

не равно

3!=3; /∗ 0 ∗/

2.99!=3 /∗ 1 ∗/

Вопрос №19. Логические операции. Особенности вычисления выражений, содержащих логические операции.

операция

смысл

пример

&&

AND

((9/3)==3) && (2∗3==6); /∗ 1 ∗/ (’A’==’a’) && (3==3) /∗ 0 ∗/

||

OR

2==3 || ’A’==’A’; /∗ 1 ∗/

2.99>=3 || 0 /∗ 0 ∗/

!

NOT

!(3==3); /∗ 0 ∗/

!(2.99>=3) /∗ 1 ∗/

Выражения, содержащие логические операции, вычисляются слева направо, и вычисление прекращается, как только установлена гарантированная истинность или ложность результата, например:

(3==3) || ((c=getchar())==’y’) – второе выражение не вычисляется.

(0) && ((x=x+1)>0) - второе выражение не вычисляется.

Вопрос №20. Операции инкремента и декремента.

Это – унарные операции, позволяющие увеличить или уменьшить на 1 текущее значение операнда. Каждая из них существует в двух формах – постфиксной и префиксной.

Постфиксная форма

x++ означает то же самое, что и x=x+1;

x−− означает то же самое, что и x=x−1;

y=x++; означает то же самое, что и y=x; x=x+1; x используется до его автоувеличения.

y=x−−; означает то же самое, что и y=x; x=x−1; x используется до его автоуменьшения.

Префиксная форма

++x означает то же самое, что и x=x+1;

−−x означает то же самое, что и x=x−1;

y=++x; означает то же самое, что и x=x+1;y=x; x используется после его автоувеличения.

y=−−x; означает то же самое, что и x=x−1;y=x; x используется после его автоуменьшения.

Вопрос №21. Поразрядные (битовые) операции.

Эти операции применимы только к целочисленным аргументам типов: char, short, int и long (как к имеющим знак, так и к беззнаковым).

операция

смысл

пример

&

AND

0x77 & 0x3; /∗ 0x3 ∗/

0x77 & 0x0; /∗ 0 ∗/

|

OR

0x700 | 0x33; /∗ 0x733 ∗/

0x070 | 0 /∗ 0x070 ∗/

^

XOR

0x770 ^ 0x773; /∗ 0x3 ∗/

0x33 ^ 0x33; /∗ 0 ∗/

<<

сдвиг влево

0x01<<4; /∗ 0x10 ∗/

1<<2; /∗ 4 ∗/

>>

сдвиг вправо

0x010>>4; /∗ 0x01 ∗/

4>>1 /∗ 2 ∗/

~

инверсия битов

x = x & ~077

/*сбросить в 0 младшие 6 бит*/


Лекции 4-5. Типы данных, операции и выражения (продолжение).

Вопрос №22. Операция присваивания и ее особенности в языке С.

В языке С операция присваивания немного отличается от аналогичной операции в других языках:

Присваивание a = b действительно является операцией (а не оператором), т.е. после завершения этой операции получается некоторое значение (в данном примере – значение переменной b), которое может быть использовано для последующих вычислений. Следовательно, присваивание может применяться внутри выражений, наряду с другими операциями.

#include <stdio.h>

#include <stdlib.h>