Запрос относительно оператора постинкремента и предварительного инкремента

Если у меня есть следующий код:

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?


person user_9    schedule 18.08.2019    source источник
comment
Обратите внимание, что в сравнении участвует результат n++/++n, а не n. Когда модификация вступит в силу, на самом деле не имеет значения.   -  person cpplearner    schedule 18.08.2019
comment
оба разные вещи. ++n означает, что он сначала увеличивается и используется в операторе, в то время как в n++ он использует то же значение n в операторе, а затем увеличивает n на 1   -  person ChauhanTs    schedule 18.08.2019
comment
@cpplearner Разве результат n++ и ++n не должен быть одинаковым?   -  person user_9    schedule 18.08.2019
comment
По сути, @user_9 они оба будут иметь одинаковый эффект на результат n (приращение n); разница в представлении n результата. Самый простой способ описать семантику состоит в том, что ++n — это приращение перед проверкой, а n++ — это проверка перед приращением. (Механически это означает, что префикс проще, поскольку постфикс должен хранить и возвращать исходное значение n.)   -  person Justin Time - Reinstate Monica    schedule 18.08.2019


Ответы (1)


оба разные вещи. ++n означает, что он сначала увеличивает n на 1 и использует значение обновления в операторе, тогда как в n++ он использует то же значение n в операторе, а затем увеличивает n на 1

person ChauhanTs    schedule 18.08.2019