交換整数変数の内容のいくつかの方法

プラスチックコンテンツを交換するにはいくつかの方法が、このコードを見ては、
一時変数交換整形コンテンツを作成します。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を得ることができ、そのキーとビットごとの排他的論理和し、理解することができます為替の成形を達成。そして、このアルゴリズムは最大シェーピングを超えていない、それは良いアルゴリズムであるが、実際には、このアルゴリズムの効率は、一時的な変数を作成するための効率的なようではありません。

公開された20元の記事 ウォンの賞賛9 ビュー910

おすすめ

転載: blog.csdn.net/weixin_44915811/article/details/99698066