2013-12-15 3 views
0

Я пытался понять, как работают сообщения и предварительные приращения в последнее время, и я слишком много думал об этом.Preincrement and Postincrement

«Продукт» стал 25 после одной итерации?

Product *=5++ 

И «Котировки» становятся 5/6 после одной итерации?

Quotient /= ++x 

Благодарим вас заранее.

+0

Вы даже пробовали компиляции этого ?! –

+4

'5 ++' не имеет смысла. Почему бы вам просто не написать «6»? –

ответ

2

5++ является неверным.

Quotient /= ++x; такое же, как x = x + 1; Quotient = Quotient/x; (при условии, что это просто цифры).

1

Ваш код недопустим C++, поскольку встроенный оператор post-increment может применяться только к lvalues, но буквальные целые числа являются значениями r.

Кроме того, значение (встроенного) пред-инкрементного выражения является приращенным значением, тогда как значение выражения после инкремента является исходным значением.

0

Предварительное приращение изменяет переменную и оценивает измененное значение.

Post-increment оценивает значение переменной и затем увеличивает эту переменную.

int a = 5; 
int b = ++a; // a = a + 1; b = a 
int c = a++; // c = a; a = a + 1 

Рассмотрим эти простые реализации ++ для междунар

int& int::preincrement() 
{ 
    this->m_value += 1; 
    return *this; 
} 

int int::postincrement() 
{ 
    int before = this->m_value; 
    this->m_value += 1; 
    return before; 
} 
+0

Просто обязательное предупреждение для тех, кто может получить эту идею, 'int' определенно не является классом. – chris

Смежные вопросы