Почему 2 и -2 вместо 1 и -1?

Я написал эту очень простую программу:

    #include <iostream>

using namespace std;

int main()
{
int x = 0;

cout << x++<<endl;
cout<<++x<<endl;
int y = 0;

cout<<y--<<endl;
cout<<--y<<endl;
return 0;
}

и вот что я получил, когда запустил его:

0

2

0

-2

я использую code :: blocks для написания программы, а моей операционной системой является Ubuntu 12.10.
Как мне исправить мою программу, чтобы я вместо этого увидел 0 1 0 -1?

-7

Решение

Вам нужно понять понятия постинкремента (декремента) и предварительного инкремента (декремента).

Пост приращения

cout << x++<<endl;

Вы можете понимать эту строку как «Возвращаем значение x» + «увеличиваем значение x». Т.е. возвращаемое значение перед приращением.

Так что верните 0 и увеличьте значение x до 1.

Предварительное увеличение

cout<<++x<<endl;

Это наоборот — увеличенное значение возвращается.

Так что увеличьте значение x до 2 и верните 2.

4

Другие решения

cout << x++ << endl;

Постинкрементные приращения x от 0 до 1 и дает старый значение, 0. Значение xсейчас 1.

cout << ++x << endl;

Приращения до приращения x от 1 до 2, и дает новый значение, 2. Значение xсейчас 2.

2

x++ will делает вашу переменную 1, но к этому времени присваивается значение 0 из-за поведения после ++ ++x будет 2

Постинкремент и преинкремент внутри цикла for дают одинаковый результат

1

X ++ сначала печатает его, а затем увеличивает значение.
++ X сначала увеличивает значение, а затем печатает его.

так,

cout<<x++<<endl   // Prints '0' and increments to '1'
cout<<++x<<endl   // Increments '1' to '2' and prints it
1
По вопросам рекламы [email protected]