פורסם 2011 בספטמבר 1114 שנים דווקא לא, אבל יפה הבעיה בשיטה הזו היא שאתה צריך להמיר את המספרים ל-double (ככה שאתה כן צריך משתנים זמניים אם יש לך רק int) וגם פעולות כפל וחילוק של double הן לא מדוייקות במחשב. השיטה שאני מדבר עליה מבוססת על אותו עקרון, עם חיבור וחיסור: a = a + b;b = a - b;a = a - b; והשיטה השנייה היא קצת יותר מתוחכמת (משתמשת בתכונה מסויימת של אופרטור השמה): a ^= b ^= a ^= b; השיטה משתמשת באותו עיקרון כמו הקודמת, אבל מסתמכת על כך ש-xor (אופרטור ^) היא פעולה הופכית לעצמה. זהירות - בשיטות אלה חשוב לוודא ש-a ו-b מצביעים למקומות שונים (אם הם Integer ולא int או אם משתמשים במקרו של C) אחרת זה מאפס אותם. חומר קריאה: http://en.wikipedia.org/wiki/XOR_swap_algorithm
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.