v = (v == 0 ? 1 : 0); と書くより良い方法はありますか? [closed] 質問する

v = (v == 0 ? 1 : 0); と書くより良い方法はありますか? [closed] 質問する

変数を 0 と 1 の間で切り替えたいです。0 の場合は 1 に設定し、1 の場合は 0 に設定します。

これは非常に基本的な操作なので、頻繁に書いているので、できるだけ短くて明確な方法を調べたいと思っています。これまでのところ、私のベストの方法は次のとおりです。

v = (v == 0 ? 1 : 0);

これを改善できますか?

編集: この質問は、上記の文を明確さを保ちながら最小限の文字数で記述する方法を尋ねています。これは「本当の質問ではない」のでしょうか? これはコード ゴルフの演習を意図したものではありませんが、これをゴルフとしてアプローチした人々から興味深い回答がいくつか出てきました。ゴルフが建設的で考えさせられる方法で使用されているのを見るのはうれしいことです。

ベストアンサー1

次のように簡単に使用できます:

v = 1 - v;

もちろん、これは変数が適切に初期化されていること、つまり、値が 0 または 1 のみであることを前提としています。

より短いですが、あまり一般的ではない演算子を使用する別の方法:

v ^= 1;

編集:

誤解のないように言うと、私はこの質問にコード ゴルフとしてアプローチしたことはありません。演算子の副作用などのわかりにくいトリックを使用せずにタスクを実行する簡単な方法を見つけようとしただけです。

おすすめ記事