- スレを勃てるまでもないC/C++の質問はここで 23 [転載禁止]©2ch.net
190 :デフォルトの名無しさん[sage]:2015/03/28(土) 16:48:23.64 ID:NmdYaBEp - 初歩的な質問で恐れ入ります。
http://www.slideshare.net/herumi/cmovmaxps ここの資料を見てたら unsigned int a, b, x; if( a<=x && x<=b ) {...} 上記の条件式を下記に書き換えれば、(条件)分岐は1回で済む、と紹介されてました。 if( (x-a) <= (b-a) ) {...} でもこの書き換えって等価なんでしょうか? たとえば a=70; b=90; x=60; だとおかしいような‥
|
- スレを勃てるまでもないC/C++の質問はここで 23 [転載禁止]©2ch.net
193 :デフォルトの名無しさん[sage]:2015/03/28(土) 17:00:21.01 ID:NmdYaBEp - >>191
でもつねにxがa以上なら、この部分を記述する必要はないのではないでしょうか? if( /* a<=x && */ x<=b ) {...}
|
- スレを勃てるまでもないC/C++の質問はここで 23 [転載禁止]©2ch.net
196 :デフォルトの名無しさん[sage]:2015/03/28(土) 17:17:46.86 ID:NmdYaBEp - 最初の条件式はxがa〜bの範囲内(両端含む)かどうかを調べるということですよね。
x<aの時も、そうでない時も、両方のケースを想定している条件式なんじゃないでしょうか。
|
- スレを勃てるまでもないC/C++の質問はここで 23 [転載禁止]©2ch.net
197 :デフォルトの名無しさん[sage]:2015/03/28(土) 17:19:36.35 ID:NmdYaBEp - アンカー忘れ、すみません。196は194へのレスでした。
|
- スレを勃てるまでもないC/C++の質問はここで 23 [転載禁止]©2ch.net
198 :デフォルトの名無しさん[sage]:2015/03/28(土) 17:46:19.84 ID:NmdYaBEp - ideoneで試したらx<aのケースだと下記のifも不成立でした。私のミス、すみません。
unsigned intの計算途中で負数になった際の取り扱いを勉強し直します。 レス下さった方々、ありがとうございました。
|
- スレを勃てるまでもないC/C++の質問はここで 23 [転載禁止]©2ch.net
200 :デフォルトの名無しさん[sage]:2015/03/28(土) 18:38:44.19 ID:NmdYaBEp - >>199
printf("%u\n",(x-a)); で4294967286となるので、「変数がunsignedで計算途中で負数が生じた時の挙動」が 追加の条件(情報?)になるのではないでしょうか。 数学的には-10だから両方の条件式は矛盾しますよね。
|