Как да се промени, за да се промени мястото
Добрата стара задача. Как да промените стойностите на две променливи в някои места? Първият вариант е очевидно. Представяме трета променлива. Размяна протича през него. Пример. Аз не мога да си представя за някого.
Пример за такова глупаво да звучи, тъй като разходите могат да бъдат оценени. Ако променливата с по-голям опит битова дълбочина да напишете стойността на по-ниска дълбочина малко, няма проблеми. Ако, напротив, ние трябва действие. Можете да изрежете резултата, можете да спрете сигнала и може да се увеличи капацитета. Нека нашата кухня на трета променлива и всички по-лошо.
По-малко очевидно е същата като на манивела хитрост, без да използвате трета променлива. Това може да стане, например, по случая.
Или чрез използване на по-евтини побитови операции.
За това, което може дори да се наложи? Буфер - това е просто и ясно. Мога да ви предложим две причини, за да знаят. Не е зле за загрявка мозък. Това е първият. Можете да си представите, че имате много малко памет е на разположение, но не и на проблеми с производителността. Това е второто.
Трябва да добавя, че използването на стека може да бъде ефективно. Всъщност - същия буфер. Само най-вероятно се използва ефективно на ниво архитектура. Въпреки това, той е заподозрян, че оптимизиране компилатор първо ще проектира за обмен през комина, но, разбира се, не е в състояние да втори и трети. Той оптимизира, а не ясновидец.
Ако възнамерявате да използвате инлайн монтаж при програмирането на C, има усложнения. Вместо да се поставят директно на стека променливи, мисля, че би било по-правилно да ги запишете в предварително регистри. Но когато започнете така да попречи на работата на програмата, без значение какъв вид помощ не може да разчита на компилатора. Но някои неща са наистина по-лесно да мамят автоматично, дори и да не е непременно ефективни. Приветствия към вас, контролирани езици! Но при програмирането микроконтролери щастие успя достъпно езици, но можете да покажат таланта си в пълна степен, всички помири себе си.
Какво съм аз? Дори и най-простата задача изисква сериозно внимание, ясно определяне на изходните линии и цели.