double arrow

Преобразование типов. В операторах и выражениях должны быть данные одного и того же типа

В операторах и выражениях должны быть данные одного и того же типа. Но на Си возможно это нарушить (в отличии от Паскаля). Си компилятор автоматически преобразует типы, но следует соблюдать определенные правила:

1.Если производится операция над данными 2-х разных типов, то обе величины приводятся к высшему типу (происходит "повышение" типа).

2. Типы от высшего к низшему: double, float, long, int, short, char. Применение слова unsigned повышает ранг соответствующего типа со знаком.

3. В операторе присваивания конечный результат вычисления выражения в правой части приводится к типу переменной, которой должно быть присвоено это значение (при этом может быть как повышение так и понижение типа). "Понижение" типа приводит к отбрасыванию разрядов.

4. При вычислениях величин типа float они автоматически преобразуются в тип double (для сохранения точности вычислений, это уменьшает ошибку округления). Конечный результат преобразуется обратно в float, если это диктуется оператором описания.

Операции приведения

Хотя в СИ и возможно преобразование типов, лучше избегать этого и указывать точно тип данных. Это называется привидением типов.

int num;

num = 1,6+1,7; 3,3 => 3. Сначала числа складываются, затем результат приводится к указанному типу.

num = (int)1,6+(int)1,7; 1+1 = 2. В это случае, числа сначала приведены к данному типу, а затем складываются.

Дополнительные операции присваивания

+ = (величина, стоящая справа, прибавляется к величине, расположенной слева)

n + = 13 тоже, что и n=n+13

- = (от величины, стоящей слева, отнимается величина, расположенная справа)

den - = 20 den = den-20

* = (величина слева умножается на величину справа)

n*=2 n = n*2

/ = делит переменную л.ч. на величину п.ч.

% = дает остаток от деления переменной л.ч. на величину п.ч.

<<=; >>=; | =; & =; ^ =; ~=;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: