Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
c-operators.doc
Скачиваний:
7
Добавлен:
08.11.2018
Размер:
198.14 Кб
Скачать
    1. Арифметические операции

В Си имеется пять арифметических операций: сложение (+), вычитание (-), умножение (*), деление (/) и деление по модулю (%). Операнды арифметических операций должны иметь числовые значения, а форма записи выражений — инфиксная. Все арифметические операции левоассоциативны.

Второй операнд в операциях деления не должен быть равен нулю, а для операции деления по модулю оба операнда должны быть целого типа.

Деление целых чисел приводит к целочисленному результату (делимому).

Правила выполнения всех операций не отличаются от обычных алгебраических, за исключением одного случая. Неясно, какой знак будет получен у остатка при выполнении деления по модулю, если операнды имеют разные знаки. Большинство реализаций Си (в том числе и Microsoft C и Turbo C), присваивают остатку знак первого операнда.

Например,

a

b

a/b

a%b

11

3

3

2

11

-3

-3

2

-11

3

-3

-2

-11

-3

3

-2

Заметим, что стандартом языка оговорено, что всегда должно выполняться соотношение (при b отличном от нуля)

a= (a/b)*b+a%b

(проверьте, что это действительно так).

Типичным применением операции "деление по модулю" является проверка на четность-нечетность операнда: a%2.

При выполнении арифметических операций с операндами различного типа предварительно производится выравнивание типов, которое условно можно охарактеризовать так: происходит преобразование более "короткого" операнда к типу более "длинного". При этом типы по возрастанию располагаются в следующем порядке:

char int long float double long double.

    1. Унарные операции

Си имеет несколько операций, применяющихся к единственному операнду (унарных операций). Эти операции имеют приоритет выше, чем арифметические.

      1. Унарный минус

Типичный пример такой операции — это унарный минус, который может стоять перед константой, переменной или выражением. Он обозначается тем же символом что и операция вычитания, однако наличие только одного операнда придает ему иной смысл:

-0X1a2 -x -3*(x+y) -5E-9

Можно считать, что в Си все числовые константы положительные, а отрицательные — это выражения из унарного минуса и положительной константы. Для симметрии стандартом языка предусмотрен как дополнительная

      1. Операция унарный плюс.

Унарные минус и плюс — это префиксные операции.

      1. Задание.

1. Определить значения следующих выражений, если переменные имеют значения a=8, b=3, c=-5:

  • 3-4 % 5+6

  • -3*4%-6/5

  • (7+6)%5/2

  • 6*-9%10/3

  • a*b/c

  • a*(c%b)

  • (a*c)%b

2. Определить значения следующих выражений, если переменные имеют значения x=8.8, y=3.5,z=-5.2

  • x%y

  • 2*x/3*y

  • 2*x/(3*y)

3. Определите значения следующих выражений, если с1, с2 и с3 получили значения соответственно 'E', '2', '5' и ? (их десятичные ASCII-коды соответственно 69, 50 и 53, а код символа * равен 42 ):

  • с2-'2'

  • '2'+'2'

  • '3'*c2

  • c3+'*'

  • c2-2

  • (c1/c2)*c3

  • 3*c2

  • c1%3

  • ('x'-'0')/3

4. Определите значения следующих выражений, при значениях переменных

i=8 j=3 x=0.005 y=0.5 c='c' d='d':

(3*i - 2*j) \% ( 2*d - c)

(i - 3*j) \% ( c + 2*d ) / (x-y)

%\dm

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]