Если у меня есть следующий код:
int n=5;
if (n++>=6){
cout<<"Yay";
}
else cout<<"No";
И я сравниваю это с этим:
int n=5;
if (++n>=6){
cout<<"Yay";
}
else cout<<"No";
Почему результат в обоих случаях разный? Разве n не увеличивается в обоих случаях (либо после, либо до увеличения) до того, как встретится неравенство?
Когда пост-инкремент вступает в силу — непосредственно перед тем, как встретится следующий оператор? Если это так, останется ли значение n++ равным 5, пока не будет оценено все неравенство?
Другой вопрос, который у меня есть, заключается в том, что приращение условия if повлияет на значение переменной снаружи? Если у меня есть первый код (пост-инкремент) и я печатаю n, вернет ли n 6?
n++
/++n
, а неn
. Когда модификация вступит в силу, на самом деле не имеет значения. - person cpplearner   schedule 18.08.2019n
(приращениеn
); разница в представленииn
результата. Самый простой способ описать семантику состоит в том, что++n
— это приращение перед проверкой, аn++
— это проверка перед приращением. (Механически это означает, что префикс проще, поскольку постфикс должен хранить и возвращать исходное значениеn
.) - person Justin Time - Reinstate Monica   schedule 18.08.2019