20代 / 独身 / 会社員

複数の変数に同じ値を代入する(同時代入)

下記URLに移転しました。 5秒後に自動的にリダイレクトします

背景

複数の値に同時に代入したいことがたまにある。
(その行為が妥当かどうなのかは置いておいて)

普通に

a = 0;
b = 0;

とすればよいのだけれど、 どうせならもっとスマートな書き方を知っておこうということで調べてみた結果をまとめる。


結論

a = b = 0;

どの言語もだいたい上記のような書き方で宣言できる。

「代入」はそもそも「式」なので、一文で記入した場合、右から評価される。 それゆえ、このような書き方ですべての変数に代入することが可能となる。


言語ごとの違い

C / C++ / C# / Objective-C

int a,b;
a = b = 0;
int a = 0, b = 0;

※ 以下のようにすると、bにのみ0が代入される

int a, b = 0;

JavaScript

var a = b = 0;

※ 上記の場合、aはローカル変数、bはグローバル変数となる

PHP

<? php
$a = $b = 0;

Python

// マルチターゲット代入
a = b = 0;

// アンパック代入
a, b = 0, 0;
a, b = 1, 2;  // ※

※アンパック代入では一括で違う値も代入可能(さすが)

VBA

無理


他にもわかったら追記します