rend=GetRand(1);
if(rend==0){
rend==-1;
}
else{
rend==1;
}
rendにランダムで数値を1か0を入力し、
それぞれ符号を反転させるための変数として使います。
これ以上簡単になりませんか?
このソースは簡略化できますか?
Re:このソースは簡略化できますか?
何をもって簡単と考えるかによりますが、単に行数を短くしたいのであれば...
rend = (GetRand(1) << 1) - 1;
でどうでしょうか?
rend = (GetRand(1) << 1) - 1;
でどうでしょうか?
Re:このソースは簡略化できますか?
解決したみたいですが、とりあえず書いておきます。
みけCATさん、たかぎさんは数式で解決していますが、
if文は、?と:を使った条件演算子で短縮できます。
(条件式)?(真の時):(偽の時)という風に使います。
rend = GetRand(1)?1:-1;
今回の場合はこうなります。
みけCATさん、たかぎさんは数式で解決していますが、
if文は、?と:を使った条件演算子で短縮できます。
(条件式)?(真の時):(偽の時)という風に使います。
rend = GetRand(1)?1:-1;
今回の場合はこうなります。
Re:このソースは簡略化できますか?
白い時空様、レスありがとうございます。
えっと、?と:を使うことでif文と同じ効果がでるということでしょうか?
GetRandで取得した数値が1の場合真に分岐、-1のときに偽に分岐ということですか?
その場合、分岐したあとの計算式などはどこらへんに・・・
解釈その2として、1のときのみrendに格納するというのがあるのですが・・・
えっと、?と:を使うことでif文と同じ効果がでるということでしょうか?
GetRandで取得した数値が1の場合真に分岐、-1のときに偽に分岐ということですか?
その場合、分岐したあとの計算式などはどこらへんに・・・
解釈その2として、1のときのみrendに格納するというのがあるのですが・・・
Re:このソースは簡略化できますか?
>rend = GetRand(1)?1:-1; は、 if (GetRand(1)) { /* if (GetRand(1) != 0) { のこと */ rend = 1; } else { rend = -1; } と等価です。
Re:このソースは簡略化できますか?
boxさん。補足ありがとうございます。
すいません。ちょっと、説明不足でした。
条件式がGetRand(1)だけになっていますが、
0は偽、それ以外の数字は真という決まりになっているので
GetRand(1)が1なら真、0なら偽として扱われます。
まあ、これも短縮する方法の一つですね。
?と:を使うこの方法は、今回のような簡単な分岐の場合に使用できます。
if文で代用可能なので、無理に使う必要はないですが、覚えておけば今回のように短縮できて便利ですね。
すいません。ちょっと、説明不足でした。
条件式がGetRand(1)だけになっていますが、
0は偽、それ以外の数字は真という決まりになっているので
GetRand(1)が1なら真、0なら偽として扱われます。
まあ、これも短縮する方法の一つですね。
?と:を使うこの方法は、今回のような簡単な分岐の場合に使用できます。
if文で代用可能なので、無理に使う必要はないですが、覚えておけば今回のように短縮できて便利ですね。