C#で一時変数を使わずに2つの数値を入れ替える方法(算術演算子を活用)
C#で2つの変数の値を入れ替える(スワップする)場合、通常は一時変数(テンポラリ変数)を使用します。しかし、算術演算子を活用することで、一時変数なしでも値の交換が可能です。
基本的な考え方
まず、入れ替え対象となる2つの変数を用意します。
val1 = 5; val2 = 10;
次に、加算と減算を組み合わせた以下の手順で値を入れ替えます。
val1 = val1 + val2; // val1に両方の合計を代入 val2 = val1 - val2; // 合計から元のval2を引くと、元のval1が残る val1 = val1 - val2; // 合計から新しいval2(元のval1)を引くと、元のval2が残る
処理の流れ
この手法では、以下のように値が変化していきます。
- 1行目: val1 = 5 + 10 = 15
- 2行目: val2 = 15 - 10 = 5(元のval1の値)
- 3行目: val1 = 15 - 5 = 10(元のval2の値)
サンプルコード
実際にC#で動作確認できる完全なプログラム例は以下の通りです。
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
int val1, val2;
val1 = 5;
val2 = 10;
Console.WriteLine("入れ替え前の値...");
Console.WriteLine(val1.ToString());
Console.WriteLine(val2.ToString());
// 一時変数を使わずに入れ替え
val1 = val1 + val2;
val2 = val1 - val2;
val1 = val1 - val2;
Console.WriteLine("入れ替え後の値...");
Console.WriteLine(val1.ToString());
Console.WriteLine(val2.ToString());
Console.ReadLine();
}
}
}実行結果
入れ替え前の値... 5 10 入れ替え後の値... 10 5
注意点
この方法はシンプルで便利ですが、いくつか留意すべき点があります。
- オーバーフローのリスク: 加算の際にint型の最大値を超えると、オーバーフローが発生する可能性があります。大きな値を扱う場合はlong型などを使用するか、XOR演算によるスワップを検討してください。
- 可読性: 一時変数を使う方法の方が意図が明確で読みやすい場合もあります。チーム開発では可読性を優先する判断も重要です。
-
C#で変数への参照を割り当てる方法|refキーワードの使い方
refキーワードによる参照渡しの基本C#で変数への参照を割り当てるには、refキーワードを使用します。参照パラメータとは、変数が格納されているメモリ上の場所への参照のことです。値渡しの場合とは異なり、参照渡しで引数を渡すときには新しいストレージ領域は作成されません。つまり、呼び出されたメソッドは呼び出し元の変数そのものを直接操作することになります。参照パラメータは、メソッドの宣言側と呼び出し側の両方でrefキーワードを使って指定する必要があります。値渡しとの違い通常の値渡しでは引数のコピーがメソッドに渡されるため、メソッド内で値を変更しても呼び出し元の変数には影響しません。一方、参照渡しでは変
-
Pythonで2つの変数の値を交換する方法【一時変数あり・なしの2パターン】
はじめにプログラミングにおいて、2つの変数が持つ値を入れ替える「スワップ(交換)」処理は非常によく使われる基本操作です。この記事では、Pythonで変数を交換する2つの方法を、実際のコード例とともにわかりやすく解説します。方法1:一時変数を使う方法最も古典的で汎用的なのが、もう1つの一時変数(テンポラリ変数)を介して値を入れ替える方法です。他の多くのプログラミング言語でも同様の手法が使われます。>>> x = 10>>> y = 20>>> z = x # x の値を一時変数 z に退避>>> x = y # y