トップページ > プログラム > 2015年03月28日 > NmdYaBEp

書き込み順位&時間帯一覧

4 位/153 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000141000006



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
スレを勃てるまでもないC/C++の質問はここで 23 [転載禁止]©2ch.net

書き込みレス一覧

スレを勃てるまでもない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だから両方の条件式は矛盾しますよね。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。