Cтраница 1
Операции инкремента () и декремента ( -) могут быть как префиксными, так и постфиксными. В первом случае сначала выполняется операция инкремента или декремента, а затем результат операции используется в выражении. [1]
Операции инкремента () или декремента ( -) могут появляться перед или после своего операнда. Когда операция появляется перед своим операндом, то величина операнда инкрементируется или декре-ментируется и становится результатом вычисления выражения. Когда операция стоит после своего операнда, то увеличение или уменьшение значения операнда происходит после вычисления всего выражения и использования результата. [2]
Операции инкремента и декремента - ( ЯП Си) - увеличивают или уменьшают значение единственного операнда до или после использования его значения в выражении. [3]
![]() |
Операции инкремента и декремента. [4] |
Если операции инкремента или декремента помещаются перед переменной, они называются соответственно преинкрементными или предекрементными операциями. Если операции инкремента или декремента помещаются после переменной, они называются соответственно постинкрементными или постдекрементными операциями. Операция преинкремента ( предекремента) над переменной вызывает увеличение ( уменьшение) этой переменной на 1, затем новое значение переменной используется в выражении, в котором она появляется. [5]
![]() |
Арифметические операции присваивания. [6] |
Если операция инкремента или декремента помещена перед переменной, говорят о префиксной форме записи инкремента или декремента. Если операция инкремента или декремента записана после переменной, то говорят о постфиксной форме записи. При префиксной форме переменная сначала увеличивается или уменьшается на единицу, а затем это ее новое значение используется в том выражении, в котором она встретилась. При постфиксной форме в выражении используется текущее значение переменной, и только после этого ее значение увеличивается или уменьшается на единицу. [7]
Все операции инкремента и декремента в префиксной и постфиксной формах могут быть перегружены. Мы увидим, как компилятор различает префиксные или постфиксные варианты операций инкремента или декремента. [8]
Чтобы перегрузить операции инкремента, разрешив тем самым использование и преинкремента и постинкремента, каждая перегруженная функция-операция должна иметь различную сигнатуру, чтобы компилятор мог определить, какая из операций подразумевается. Префиксные версии перегружаются точно так же, как перегружаась бы любая другая префиксная одноместная операция. На самом деле пользователь не передает значение этого специального аргумента целого типа. Это просто помогает компилятору различить префиксные и постфиксные версии операций инкремента и декремента. [9]
Чтобы перегрузить операцию инкремента для получения возможности использования и префиксной, и постфиксной форм, каждая из этих двух перегруженных функций-операций должна иметь разную сигнатуру, чтобы компилятор имел возможность определить, какая версия имеется в виду в каждом конкретном случае. Префиксный вариант перегружается точно так же, как любая другая префиксная унарная операция. [10]
Чтобы перегрузить операцию инкремента для получения возможности использования и префиксной, и постфиксной форм, каждая из этих двух перегруженных функций-операций должна иметь разную сигнатуру, чтобы компилятор имел возможность определить, какая версия имеется в виду в каждом конкретном случае. Префиксный вариант перегружается точно так же, как любая другая префиксная унарная операция. Обеспечение уникальной сигнатуры функции операции постфиксной формы инкремента достигается с помощью фиктивного аргумента типа int. Пользователь может не задавать никакого значения этому аргументу. Он вводится просто для того, чтобы помочь компилятору различать префиксные и постфиксные формы операций инкремента и декремента. [11]
![]() |
Демонстрация различия между операциями преинкремента и постинкремента. [12] |
Попытка использовать операцию инкремента или декремента с выражением, отличным от простого имени переменной, вроде ( х 1), является синтаксической ошибкой. [13]
Попытка использовать операцию инкремента или декремента с выражением, отличным от простого имени переменной, вроде ( х 1), является синтаксической ошибкой. [14]
Попытка использовать в операции инкремента или декремента операнд, отличный от имени простой переменной, например, выражение ( х 1) является синтаксической ошибкой. [15]