![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
В Си имеется пять арифметических операций: сложение (+), вычитание (-), умножение (*), деление (/) и деление по модулю (%). Операнды арифметических операций должны иметь числовые значения, а форма записи выражений — инфиксная. Все арифметические операции левоассоциативны.
Второй операнд в операциях деления не должен быть равен нулю, а для операции деления по модулю оба операнда должны быть целого типа.
Деление целых чисел приводит к целочисленному результату (делимому).
Правила выполнения всех операций не отличаются от обычных алгебраических, за исключением одного случая. Неясно, какой знак будет получен у остатка при выполнении деления по модулю, если операнды имеют разные знаки. Большинство реализаций Си (в том числе и Microsoft C и Turbo C), присваивают остатку знак первого операнда.
Например,
a | b | a/b | a%b |
-3 | -3 | ||
-11 | -3 | -2 | |
-11 | -3 | -2 |
Заметим, что стандартом языка оговорено, что всегда должно выполняться соотношение (при b отличном от нуля)
a= (a/b)*b+a%b
(проверьте, что это действительно так).
Типичным применением операции "деление по модулю" является проверка на четность-нечетность операнда: a%2.
При выполнении арифметических операций с операндами различного типа предварительно производится выравнивание типов, которое условно можно охарактеризовать так: происходит преобразование более "короткого" операнда к типу более "длинного". При этом типы по возрастанию располагаются в следующем порядке:
char int long float double long double.
Дата публикования: 2014-12-25; Прочитано: 144 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!