Probably the most useful varient of this was on the old IBM 360 line which had "XC", Exclusive Or Characters, which could be used to swap up to 255 8 bit strings at a time. Single "int" temporaries are not as expensive then or now but whole blocks of memory for temps used to be expensive.
Reason for my vote of 5
That's *the* established way since those old days when micro controllers had a few bytes of data memory and one could "not afford" to have a temp var in that very little memory.