Трюк с обменом: a = b + (b = a) * 0;

a=b+(b=a)*0;

Это предложение может поменять местами значение между a и b.
Я пробовал это с C #, и он работает.
Но я просто не понимаю, как это работает.
например,

a = 1, b = 2

Я перечисляю шаги, как показано ниже:

b = a -> a = 1, b = 1
b * 0 -> a = 1, b = 1
b + 0 -> a = 1, b = 1
a = b -> a = 1, b = 1 ?

Но значение b может быть неправильным.
Кто-нибудь может мне помочь? Это меня очень озадачивает.

15
задан cindy 5 August 2011 в 07:45
поделиться