Что такое приращение i +++ в c ++ - PullRequest
3 голосов
/ 08 марта 2011

Может кто-нибудь сказать мне, как происходит приращение i +++ в c ++.

Ответы [ 3 ]

20 голосов
/ 08 марта 2011

Это синтаксическая ошибка.

Использование правила максимальное жевание i+++ маркируется как:

i ++ +

Последний + является оператором двоичного сложения. Но ясно, что у него нет двух операндов, что приводит к ошибке синтаксического анализатора.

EDIT:

Вопрос из комментария: Можем ли мы иметь i++++j?

Он маркируется как:

i ++ ++ j

, что снова является синтаксической ошибкой, поскольку ++ является унарным оператором.

На аналогичных строках i+++++j маркируется сканером как:

i++ ++ + j

, что совпадает с ((i++)++) + j, которое снова с ошибкой, как i++, не является lvalue, и использование ++ для него не допускается.

16 голосов
/ 08 марта 2011

i+++; не скомпилируется.В C ++ нет оператора +++.

i+++j, с другой стороны, будет компилироваться.Это добавит i и j и затем увеличит i.Потому что он анализируется как (i++)+j;

1 голос
/ 08 марта 2011

если вы имеете в виду i++, то его значение увеличивается на i после считывания значения. Как пример:

int i = 0;   // i == 0
int j = i++; // j == 0, i == 1
...