Не пойму логику программы С++

#include <iostream>
using namespace std;

int main()
{
    int a = 10;
    int b = 10;

    std::cout << a << " " << b << std::endl;

    int c = a++;
    std::cout << a << " " << b << " " << c << std::endl;

    c = ++b;
    std::cout << a << " " << b << " " << c << std::endl;

    return 0;
}

Консоль выдает следующие значения:

10 10
11 10 10
11 11 11

Не могу понять следующие: Если во втором случае переменная c принимает значения a++ то она должна во втором случае выдать c как 11 но в консоли 10 . Почему?


Ответы (2 шт):

Автор решения: Harry
int c = a++;

означает: "присвоить переменной c значение a, а потом увеличить значение a на 1. Короче, a++ увеличивает a на 1, но вот возвращает значение до увеличения. Т.е. это, грубо говоря, можно записать так:

int operator++(int)
{
    int tmp = *this;
    *this += 1;
    return tmp;
}

На то он и постфиксный инкремент - в отличие от префиксного, который

c = ++b;

присваивает переменной c значение увеличенного b.

→ Ссылка
Автор решения: TigerTV.ru

Все просто:

int c = a++;

эквивалентно

int c = a;
a += 1;

A

c = ++b;

эквивалентно

b += 1;
c = b;
→ Ссылка