Выход до и после инкрементов/декрементов
Hello guys i am new to c language. The output of the following is 6264 but i can't figure out how they got that. Please explain it.
пустота главная()
{
int a, b;
a=b=4;
b=a++;
функции printf("%д%д%д%д",++,--б,++а,б--);
геч();
}
Что я уже пробовал:
я пробовал youtube и некоторые другие форумы, но не смог получить четкого ответа.
[no name]
Ясный ответ заключается в том, что ответ, который вы получите, будет зависеть от компилятора. Я получаю 6274, когда запускаю это, и другие получат другие ответы. Зависит от того, как компилятор реализует операторы.
Rick York
Это хороший пример конструкции, которую следует избегать, поскольку результаты неоднозначны. На самом деле вопрос в том, какое значение a используется в вызове. Первое переданное значение - ++ с постинкрементом. Некоторые компиляторы помещают значение в стек, а затем применяют приращение перед отправкой последующих значений. Другие будут применять приращение после нажатия последующих значений, поэтому вы видите разные результаты. Поскольку это выражение можно обрабатывать разными, но действительными способами, я думаю, что его следует избегать вообще. То есть, если вы хотите писать переносимый код. Дело в том, что даже разные версии одного и того же компилятора могут давать разные результаты. Ради программистов обслуживания и во избежание двусмысленности я почти всегда избегаю выражений post / pre-increment и не могу вспомнить, когда в последний раз использовал их.