Не пойму логику программы С++
#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;