C++. Операции. Арифметические операции | BestProg
C++, Visual C++, Теория
BestProgISch
Содержание
- 1. Какие арифметические операции используются в языке C/C++?
- 2. Для каких типов данных можно применять арифметические операции?
- 3. Как осуществляется приведение типов в операциях +, —, *?
- 4. Какой приоритет и ассоциативность арифметических операций?
- 5. Какое отличие между бинарными и унарными операциями сложения (+) и вычитания (—)?
- 6. Какие особенности использования операции % (остаток от деления)?
- 7. Какие особенности использования операции / (деление)?
- Связанные темы
Поиск на других ресурсах:
1. Какие арифметические операции используются в языке C/C++?
В языке C/C++ поддерживаются следующие арифметические операции:
+ – сложение; - – вычитание; * – умножение; / – деление; % – остаток от деления.
Все эти операции являются бинарными. Это означает, что для получения результата, нужно 2 операнда. Общий вид арифметической операции:
операнд1 операция операнд2
где
операция – одна из операций +, —, *, %, /.
⇑
2. Для каких типов данных можно применять арифметические операции?
Арифметические операции можно применять для:
- целочисленных типов: short int, unsigned short int, int, unsigned int, long, unsigned long;
- типов с плавающей запятой (вещественных типов): float, double, long double;
- типов (классов), которые содержат «перегруженные» арифметические операции.
В арифметических операциях один из операндов может иметь целочисленный тип, а второй быть типом с плавающей запятой. В этом случае результат имеет тип с плавающей запятой.
⇑
3.
Как осуществляется приведение типов в операциях +, —, *?В выражениях, где используются операции +, —, *, действуют следующие правила приведения типа результата:
- если оба операнда имеют целый тип, то результат также будет целого типа;
- если хотя бы один из операндов имеет вещественный (с плавающей запятой) тип а другой целый тип, то результат также будет вещественного типа;
- если один из операндов имеет тип float, а другой тип double, то результат будет типа double. Это связано с тем, что тип double требует больше памяти чем тип float. В этом случае происходит расширение типа float к типу double.
⇑
4. Какой приоритет и ассоциативность арифметических операций?
Арифметические операции имеют приоритет и ассоциативность, как изображено в следующей таблице.
Наименование | Ассоциативность | |
* / % | Бинарные, мультипликативные | Слева направо |
+ — | Бинарные, аддитивные | Слева направо |
⇑
5.
Какое отличие между бинарными и унарными операциями сложения (+) и вычитания (—)?Операции сложения (+) и вычитания (—) могут быть как бинарными, так и унарными.
Бинарные операции + и — используются в выражениях при проведении вычислений.
Унарные операции + и — используются для обозначения знака числа (положительное число или отрицательное число).
Пример.
int a, b; a = -8; // унарная операция '-', обозначает знак числа b = +9; // унарная операция '+', b = 9 a = b-5; // бинарная операция '-', используется для вычисления выражения
⇑
6. Какие особенности использования операции % (остаток от деления)?
Операция % используется над целыми операндами. Операция % позволяет получить остаток от деления целых операндов.
Пример.
// Операция % - взятие остатка от деления int a, b; int c; a = 3; b = 5; c = a % b; // c = 3 a = 8; b = 4; c = a % b; // c = 0 c = 12 % 35; // c = 12 c = 35 % 12; // c = 11 c = -5 % -3; // c = -2
⇑
7.
Какие особенности использования операции / (деление)?Операция деления имеет свои особенности, которые состоят в следующем:
- если два операнда имеют целочисленный тип, то результат возвращается целого типа. В этом случае происходит деление нацело. Остаток от деления урезается;
- если один из операндов имеет тип с плавающей запятой, тогда результат имеет также тип с плавающей запятой.
Пример.
// Операция деления '/' int a, b; int c; float x; a = 8; b = 3; c = a / b; // c = 2 x = a / b; // x = 2.0 x = a / (float)b; // x = 2.666667 x = 17.0 / 3; // x = 5.666667 x = 17 / 3; // x = 5.0
⇑
Связанные темы
- Операции отношений
- Логические операции. Поразрядные логические операции. Операции сдвига
- Операторы инкремента (++) и декремента (—). Составные операторы присваивания (+=, -= …)
- Таблица приоритетности операций
⇑
C++ BuilderVisual C++арифметическая операцияоператортип данныхC# .
Net: Арифметические операции — programm.topЯзык C# поддерживает множество арифметических операторов, которые позволяют выполнять математические действия над операндами, и возвращают результат в виде числового значения. Операнды – это числовые значения: литералы, константы, переменные, которые принимают участие в операции.
В зависимости от количества операндов, которые принимает оператор, операции делятся на:
- унарные – применяются к одному операнду;
- бинарные – к двум операндам.
Унарные арифметические операторы
Оператор +
Унарный плюс – возвращает то самое значение, которое было ему передано в качестве аргумента.
int number1 = +345; //345 int number2 = +number1; //345
Оператор —
Унарный минус – используется для изменения знака числа.
long x = -123; long y = -x; //123
Инкремент ++
Инкремент применяется для увеличения числового значения на единицу. В C# существуют два инкремента: префиксный и постфиксный.
Префиксный инкремент увеличивает числовое значение операнда на единицу и возвращает вычисленное значение.
byte a = 5; byte b = ++a; // b = 6;
Постфиксный инкремент сперва возвращает значение операнда, а после этого увеличивает его значение на единицу.
byte c = 5; byte d = c++; // d = 5; c = 6;
Декремент —
Декремент используется для уменьшения значения на единицу.
Префиксный декремент уменьшает числовое значение операнда на единицу и возвращает результат.
byte u = 9; byte v = --u; // v = 8;
Постфиксный декремент сперва возвращает значение, а потом уменьшает его на единицу.
byte y = 7; byte z = y--; // z = 7; y = 6;
В большей части программ можно встретить постфиксные декремент и инкремент (i—, i++), хотя для их выполнения используется больше ресурсов компьютера. Поэтому, при возможности, используйте префиксные операторы(++i, —i), это дает возможность улучшить производительность выполнения программы.
Бинарные арифметические операции
Оператор сложения +
Бинарный плюс – возвращает сумму значений операндов.
int x = 34 + 5; //39 int y = x + 2 + 1; //42
Оператор вычитания —
Бинарный минус – используется для получения разности двух чисел.
var k = 22 - 10; //12 var g = k - 9; //3
Оператор деления /
Для целых чисел возвращает результат округленный результат деления, остаток от деления отбрасывается.
int f = 32 / 10; //3 int h = f / 2; //1
Для вещественных чисел – результат арифметического деления.
float t = 36F / 10; //3.6 float r = t / 2; //1.8
Если оба операнда являются целыми числами, то результатом выполнения операции деления будет целое число.
double j = 33 / 5; //5
Для решения этой проблемы, необходимо явно указать тип данных, хотя бы одного из значений, с помощью литерального суффикса, или добавив в конец числа “.
double j = 33d / 5; //6.6 double h = 47 / 4.0; //11.75
Остаток от деления %
Оператор для получения остатка от деления двух операндов.
int m = 98 % 9; //8 var n = m % 5; //3
Порядок выполнения арифметических операций
При выполнении нескольких операций в одном выражении, нужно учитывать их приоритет. Наивысший приоритет имеют унарные операции, за ними следуют мультипликативные(умножение, деление и взятие остатка), после них выполняются аддитивные(суммирование и вычитание) операции.
int p = 12 + 9 * 3 - 4 / 2; //37
В данном примере, сперва вычисляется результат умножения, потом деление, а после этого, слева на право суммирование и вычитание.
Для того, чтобы изменить порядок выполнения операций, можно пользоваться скобками.
Ассоциативность операций
Ассоциативность – это свойство операций, которое позволяет определить последовательность их выполнения при равном приоритете.
Существуют два типа ассоциативности:
- левоассоциативные операции – выполняются в порядке слева направо;
- правоассоциативные – справа налево;
Большинство операторов языка C# относятся к первому типу. Во второй входят префиксные инкремент и декремент.
Исходя из этого, выражение b = 45 * 12 — 3 / 4 воспринимается компилятором как b = (45 * 12) — (3 / 4).
При выполнении сложных математических расчетов, разбивайте длинные выражения на несколько простых, используйте скобки, если приоритет выполнения операций не очевиден. Это улучшит читабельность кода программы и позволит избежать непонятных ситуаций.
Смотрите также:
Операции в выражениях — базовая арифметика
Все основные арифметические ресурсы
6 Диагностические тесты 75 практических тестов Вопрос дня Карточки Learn by Concept
Справка по основам арифметики » Операции в выражениях
Решить:
Возможные ответы:
Правильный ответ:
Объяснение:
Используйте порядок операций: PEMDAS (круглые скобки, возведение в степень, умножение, деление, сложение, вычитание).
Сначала мы хотим решить, что в скобках.
Теперь выполните деление и умножение.
Следовательно, наше уравнение принимает следующий вид:
Наконец, вычитаем.
Сообщить об ошибке
Решить:
Возможные ответы:
Правильный ответ:
Объяснение:
Используйте порядок операций PEMDAS (круглые скобки, показатели степени, умножение, деление, сложение, вычитание) для решения.
Поскольку здесь нет ни скобок, ни степеней, мы можем сразу перейти к умножению и делению.
и
Следовательно, происходит следующее:
Затем сложите и вычтите.
Сообщить об ошибке
Возможные ответы:
Правильный ответ:
Объяснение:
Используя порядок операций, нам нужно сначала решить то, что находится в скобках.
Далее выполняем умножение и деление.
Наконец, сложите и вычтите.
Сообщить об ошибке
Упрощение
Возможные ответы:
Правильный ответ:
Объяснение:
Начнем с того, что заключено в скобки, поэтому становится .
Далее мы позаботимся обо всех экспонентах, которые нам дают.
Далее мы позаботимся об умножении/делении, что даст нам или .
Наконец, мы выполняем сложение/вычитание, оставляя нам .
Сообщить об ошибке
Решить:
Возможные ответы:
Правильный ответ:
Объяснение:
Используя PEMDAS, мы сначала делаем бит в скобках:
Теперь мы делаем умножение и деление:
Наконец, вычитаем.
Сообщить об ошибке
Возможные ответы:
Правильный ответ:
Объяснение:
Это классический вопрос о порядке действий, и если вы не будете осторожны, вы можете получить неправильный ответ!
Помните, порядок операций говорит, что вы должны идти в следующем порядке операций: Скобки, Экспоненты, Умножение, Деление, Сложение, Вычитание (также известный как PEMDAS). В этом уравнении вы начнете со скобок. В скобках у нас
.
Но в скобках вам все равно нужно следовать PEMDAS. Сначала мы решим показатель степени, а квадрат 2 равен 4. Затем мы разделим 16 на 4, что даст нам 4, поэтому мы можем переписать исходное уравнение как 9.0005
.
Теперь мы можем разделить на , что дает нам
.
Последний шаг — сложить и вычесть приведенные выше числа, обращая особое внимание на отрицательные знаки. В конце концов, мы получаем потому что прибавлено к равно и минус равно равно .
Сообщить об ошибке
При вычислении выражения
,
в каком порядке вы должны выполнять три операции?
Возможные ответы:
Умножение, вычитание, сложение
Вычитание, сложение, умножение
Сложение, вычитание, умножение
Вычитание, умножение, сложение
Умножение, сложение, вычитание
Правильный ответ:
Умножение, вычитание дополнение
Объяснение:
По порядку операций, при отсутствии группирующих символов, перед сложением или вычитанием необходимо отработать умножение. Затем сложение и вычитание должны выполняться слева направо; вычитание находится слева, поэтому затем выполняется вычитание, а затем сложение.
Сообщить об ошибке
При вычислении выражения
,
какую из пяти операций нужно выполнить третьей?
Возможные ответы:
Умножение
Вычитание
Возведение в квадрат
Сложение
Деление
Правильный ответ: 90 018
Квадратура
Объяснение:
По порядку операций любые операции в круглых скобках должны выполняться первыми; здесь их два, сложение и вычитание. После того, как это будет сделано, показатель степени или возведение в квадрат должен быть обработан перед другими операциями. Таким образом, правильным ответом является возведение в квадрат, третья операция.
Сообщить об ошибке
При оценке выражения
,
в каком порядке вы должны выполнять три операции?
Возможные ответы:
Вычитание, умножение, куб
Вычитание, куб, умножение
Куб, вычитание, умножение
Умножение, куб, вычитание 900 05
Кубирование, умножение, вычитание
Правильный ответ:
Кубирование, умножение, вычитание
Объяснение:
По порядку операций, при отсутствии группирующих символов, показатель степени (представленный здесь в кубе) должен быть обработан первым. Умножение должно выполняться вторым, а затем вычитанием.
Сообщить об ошибке
Упрощение:
Возможные ответы:
Правильный ответ:
9001 6 Объяснение:При делении членов с одинаковыми основаниями не забывайте вычитать степени.
Имейте в виду, что когда в числителе есть отрицательный показатель, помещение этого члена в знаменатель сделает показатель степени положительным.
Сообщить об ошибке
← Предыдущая 1 2 Следующая →
Уведомление об авторских правах
Все основные арифметические ресурсы
6 Диагностические тесты 75 практических тестов Вопрос дня Карточки Learn by Concept
6.5 Арифметические и матричные операции над выражениями
Это старая версия, посмотреть текущую версию.
Для выражений с целыми и вещественными значениями Стэн поддерживает основные
двоичные арифметические операции сложения ( +
), вычитания
( -
), умножение (*
) и деление (/
) в
обычные способы.
Для целочисленных выражений Stan поддерживает двоичный модуль ( %
)
арифметическая операция. Стэн также поддерживает унарную операцию
отрицание для целых и действительных выражений. Например,
предполагая n
и m
являются целыми переменными и x
и y
действительных переменных допустимы следующие выражения.
3,0 + 0,14 -15 2 * 3 + 1 (х - у) / 2,0 (п * (п + 1)) / 2 х/н m % n
Операции отрицания, сложения, вычитания и умножения
распространяется на матрицы, векторы и векторы-строки. Транспонировать
операция, написанная с использованием апострофа ( '
), также поддерживается
для векторов, векторов-строк и матриц. Типы возврата для матрицы
операции являются наименьшими типами, которые могут быть статически гарантированы
содержать результат. Полный набор допустимых типов ввода и
соответствующие возвращаемые типы подробно описаны в списке функций.
Например, если y
и mu
являются переменными типа вектор
и Сигма
является переменной типа матрицы
, тогда (y - mu)' * Sigma * (y - mu)
является правильно сформированным выражением типа real
. Тип
полное выражение выводится исходя из
подвыражения. Подвыражения y - mu
имеют тип вектор
потому что переменные y
и mu
имеют тип вектор
.
транспонируя это выражение, подвыражение (y - mu)'
имеет тип row_vector
. Умножение левоассоциативное, а транспонирование имеет
более высокий приоритет, чем умножение, поэтому приведенное выше выражение
эквивалентно следующей полностью определенной форме (((y - mu)') * Sigma) * (y - mu)
.
Тип подвыражения (y - mu)' * Предполагается, что Sigma
row_vector
, являющийся результатом умножения вектора-строки на
матрица. Таким образом, тип всего выражения является типом вектора-строки.
умножается на вектор (столбец), что дает реальное значение
.
Stan обеспечивает поэлементное умножение матриц (например, a .* b
) и
подразделения (например, а./б
) операции. Они обеспечивают сокращение для
заменить циклы, но по своей сути не более эффективны, чем версия
запрограммирован с поэлементными вычислениями и присваиваниями в цикле.
Например, при заданных объявлениях
vector[N] a; вектор[N]b; вектор[N]с;
присваивание,
c = a .* b;
дает тот же результат примерно с той же эффективностью, что и цикл 9.4) .
Приоритет и ассоциативность операторов
Приоритет и ассоциативность операторов, а также встроенные синтаксис, такой как индексирование массива и применение функций, приведен в табличной форме в таблице приоритетов операторов.
Таблица приоритетов операторов. Унарный, бинарный и троичный Стэна
операторы, с их приоритетами, ассоциативностью, помещают в
выражение и описание. В последних двух строках указан приоритет
применения функций и индексации массивов, матриц и векторов.
операторы перечислены в порядке старшинства, от наименее тесного
привязка к самой жесткой привязке. Полный набор юридических аргументов и
соответствующие типы результатов представлены в документации к функциям
для операторов (т.е. operator*(int,int):int
указывает
применение оператора умножения к двум целым числам, что
возвращает целое число). Скобки могут использоваться для группировки выражений
явно, а не полагаться на приоритет и
ассоциативность.
? ~ : | 10 | справа | троичный инфикс | условное |
|| | 9 | осталось | бинарный инфикс | логический или |
&& | 8 | осталось | двоичный инфикс | логических и |
== | 7 | осталось | двоичный инфикс | равенство |
!= | 7 | осталось | двоичный инфикс | неравенство |
< | 6 | осталось | двоичный инфикс | меньше |
<= | 6 | осталось | двоичный инфикс | меньше или равно |
> | 6 | осталось | двоичный инфикс | больше |
>= | 6 | осталось | двоичный инфикс | больше или равно |
+ | 5 | осталось | двоичный инфикс | дополнение |
- | 5 | осталось | двоичный инфикс | вычитание |
* | 4 | осталось | двоичный инфикс | умножение |
/ | 4 | осталось | двоичный инфикс | (справа) отделение |
% | 4 | осталось | двоичный инфикс | модуль |
\ | 3 | осталось | двоичный инфикс | левый дивизион |
. * | 2 | осталось | двоичный инфикс | поэлементное умножение |
./ | 2 | осталось | двоичный инфикс | поэлементное деление |
! | 1 | н/д | унарный префикс | логическое отрицание |
- | 1 | н/д | унарный префикс | отрицание |
+ | 1 | н/д | унарный префикс | продвижение (не работает в Стэне) | 0,5 | справа | двоичный инфикс | возведение в степень |
| 0 | н/д | унарный постфикс | перестановка |
() | 0 | н/д | префикс, упаковка | функциональное приложение |
[] | 0 | осталось | префикс, упаковка | Массив, индексация матрицы |
Другие операции формирования выражений, такие как применение функции и нижние индексы связывают сильнее, чем любые арифметические операции.