Я написал эту очень простую программу:
#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?
Вам нужно понять понятия постинкремента (декремента) и предварительного инкремента (декремента).
cout << x++<<endl;
Вы можете понимать эту строку как «Возвращаем значение x» + «увеличиваем значение x». Т.е. возвращаемое значение перед приращением.
Так что верните 0 и увеличьте значение x до 1.
cout<<++x<<endl;
Это наоборот — увеличенное значение возвращается.
Так что увеличьте значение x до 2 и верните 2.
cout << x++ << endl;
Постинкрементные приращения x
от 0 до 1 и дает старый значение, 0. Значение x
сейчас 1.
cout << ++x << endl;
Приращения до приращения x
от 1 до 2, и дает новый значение, 2. Значение x
сейчас 2.
x++
will делает вашу переменную 1, но к этому времени присваивается значение 0 из-за поведения после ++ ++x
будет 2
Постинкремент и преинкремент внутри цикла for дают одинаковый результат
X ++ сначала печатает его, а затем увеличивает значение.
++ X сначала увеличивает значение, а затем печатает его.
так,
cout<<x++<<endl // Prints '0' and increments to '1'
cout<<++x<<endl // Increments '1' to '2' and prints it