ウォルター:
私は、Javaを学んだし、この少しの時間表示をしていました。そして、この部分はトリッキーです。
int second = 66;
second = ((second >= 0) && (second < 60) ? second : (second % 60) & (minute += second / 60));
戻り第二の場合0〜60、それ以外のリターン秒〜60%と分を増やします。私は仕事にそれを期待しますが、2番目の出力は、次のとおりです。 1
無し
(minute += second / 60)
それが働きました。変更60
何のesleにし、同様に第二の変化の値を見ます。どうしたの?
ジョンスキート:
あなたは、&
ビット単位の実行している&
新しいのminute
と価値second % 60
良いアイデアことは非常に考えにくいです。
あなたは副作用を望んでいることを考えると、私は強く、ここで条件演算子を使用していないお勧めします-ちょうど使用if
声明を:
if (second > 60)
{
minute += second / 60;
second = second % 60;
}
(あなたが負の値を処理する必要がある場合は、おそらくより多くのコードが必要になります - それはあなたが望む結果によって異なります。)
ここで奪う教訓は条件演算子をするために使用されていることである値を計算します。あなたのケースでは、あなたは本当に取って興味のあるアクションをではなく、値を計算する:「場合はsecond
変数がすでに正規化されていない、メイクの両方に変更second
し、minute
」。それはあなたが考える作るべきif
声明ではなく、条件演算子。そこには時間がたくさんあることができ、条件演算子を使用するには、使用することを明確だろうif
声明を。