понедельник, 29 июня 2015 г.

Как обменять значения двух переменных без использования третей в языке си

Приведу пять способов, без комментариев:
switch2val(int *a, int* b){
    *a=*b+*a;
    *b=*a-*b;
    *a=*a-*b;
}

switch2val(int *a, int *b){
     *a=*a+*b-(*b=*a);
}

switch2val(int *a, int *b){
     *a=*a^*b;
     *b=*a^*b;
     *a=*b^*a;
}

switch2val(int *a, int *b){
     *a=*b-~*a-1;
     *b=*a+~*b+1;
     *a=*a+~*b+1;
}

switch2val(int *a, int *b){
      *a=*b+*a,*b=*a-*b,*a=*a-*b;
}

Комментариев нет: