How to swap values of two variables?

404 visualizzazioni (ultimi 30 giorni)
For instance, if i ask the user to input the values of a and b, in this case they choose a=10 and b=5 how would I be able to switch them so that it'll be a=5 and b=10.
  4 Commenti
Jan
Jan il 19 Ott 2021
Modificato: Jan il 19 Ott 2021
@Subhashini Neelamegam: Yes, but this is more efficient:
function [b, a] = swap(a, b)
end

Accedi per commentare.

Risposta accettata

David Goodmanson
David Goodmanson il 23 Ott 2017
Hi Daniel,
Take a look at the 'deal' command, in this case [b a] = deal(a,b)

Più risposte (3)

Jan
Jan il 23 Ott 2017
Cheaper than deal:
function [b, a] = swap(a, b)
% This function has no body!
  13 Commenti
Rik
Rik il 29 Ago 2023
You generally need to warm up function calls if you want to test timings online. This should be reasonably stable. As you can see, they differ by a lot, but in the other direction than your post shows. Using a function instead of a script might also affect the timings (as you can see, the same code runs over 10x faster inside a function).
timeit(@test_deal);timeit(@test_swap);% warm-up round
timeit(@test_deal),timeit(@test_swap)
ans = 0.0798
ans = 0.0017
function test_deal
c1 = zeros(100);
c2 = ones(100);
for i = 1:100000
[c1,c2] = deal(c2,c1);
end
end
function test_swap
c1 = zeros(100);
c2 = ones(100);
for i = 1:100000
[c1,c2] = swap(c2,c1);
end
end
function [a,b] = swap(a,b)
end
lala
lala il 29 Ago 2023
@Rik Thanks for your reply. You are right. :)

Accedi per commentare.


Daniel Afriyie
Daniel Afriyie il 13 Ott 2019
[b, a] = deal(a,b)

AAMIR SHEIKH
AAMIR SHEIKH il 11 Ago 2020
Going Traditionally !!!
a = input("enter a :::");
b = input("enter b :::");
temp = a;
a = b;
b = temp;
[a b]

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by