プラスチックコンテンツを交換するにはいくつかの方法が、このコードを見ては、
一時変数交換整形コンテンツを作成します。1.。特別な注意を払って、一時的な変数を作成によるスワップ2つのプラスチックコンテンツへ:インサイドあなたはパラメータがパス・バイ・コールとして知られているアドレスを、転送する必要がある機能の外部変数の内容を変更したい機能。
void Change(int* pa, int* pb)
{
int tmp = *pa;
*pa = *pb;
*pb = tmp;
}
int main()
{
int a = 10;
int b = 20;
printf("a = %d b = %d\n", a, b);
Change(&a, &b);
printf("a = %d b = %d\n", a, b);
return 0;
}
コンテンツを交換する2つの成形を加えることにより2。
int main()
{
int a = 10;
int b = 20;
printf("a = %d b = %d\n", a, b);
a = a + b;
b = a - b;
a = a - b;
printf("a = %d b = %d\n", a, b);
return 0;
}
このアルゴリズムでは、これら2つの数字が大きすぎて、2つの数字は、最大追加する場合、おそらくこのアルゴリズムは非常に良いではありませんので、プラスチックに格納できる最大値を超えていることを、いくつかの欠点を持っています。
同様に、加算器の行は、2つの数を乗算することでなければならないが、これは最大シェーピングよりもはるかに容易になり、通過することができます。
int main()
{
int a = 10;
int b = 20;
printf("a = %d b = %d\n", a, b);
a = a*b;
b = a/b;
a = a/b;
printf("a = %d b = %d\n", a, b);
return 0;
}
方法整形このコンテンツビット単位のXORを交換することによって3。コードを初めて目:
int main()
{
int a = 10;
int b = 20;
printf("a = %d b = %d\n", a, b);
a = a^b;
b = a^b;
a = a^b;
printf("a = %d b = %d\n", a, b);
return 0;
}
私たちは、あなたがこの方法ですることができ、キーとして^ B、そしてあなたは、元のA、B、およびビット単位取得することができ、排他的に、またはあなたは、元のBを得ることができ、そのキーとビットごとの排他的論理和し、理解することができます為替の成形を達成。そして、このアルゴリズムは最大シェーピングを超えていない、それは良いアルゴリズムであるが、実際には、このアルゴリズムの効率は、一時的な変数を作成するための効率的なようではありません。