!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
※前スレ
C言語なら俺に聞け 154
https://mevius.5ch.net/test/read.cgi/tech/1578997950/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 155
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 76ba-P5bm)
2020/05/10(日) 23:20:27.99ID:Z3WQBr9X0253252 (ワッチョイ 0f7b-Yzg9)
2020/06/25(木) 17:22:50.60ID:f73tPHfd0 いかん、カーニハンさんに「さん」付けるの忘れた。
カーニハンに「さん」を付けるとなんか座りが悪い気がするんだよ。
べつに「ハン」は関西弁の「〜はん」じゃないのだけど。
カーニハンに「さん」を付けるとなんか座りが悪い気がするんだよ。
べつに「ハン」は関西弁の「〜はん」じゃないのだけど。
254デフォルトの名無しさん (スッップ Sd5f-xaSm)
2020/06/25(木) 17:28:33.47ID:EHXNgq1Pd アカデミックな文章のなかでは敬称略はデフォやん
255デフォルトの名無しさん (ワッチョイ 3f01-In76)
2020/06/25(木) 17:53:32.70ID:Yy8QFoSC0 インブリードチェックとかねー
掘り掘りの打ち切り確認とか
可変配列で返せると効率的なのに記述や関数使用方法がCでは面倒くさいという
web上のサラブレッド血統表のインブリードどこも結構いい加減な自動抽出だし
掘り掘りの打ち切り確認とか
可変配列で返せると効率的なのに記述や関数使用方法がCでは面倒くさいという
web上のサラブレッド血統表のインブリードどこも結構いい加減な自動抽出だし
256デフォルトの名無しさん (ワッチョイ 7f46-rLul)
2020/06/25(木) 17:55:14.95ID:5kqDetxy0 飴ちゃんみたい、蟹はん。
257252 (ワッチョイ 0f7b-Yzg9)
2020/06/25(木) 17:58:50.94ID:f73tPHfd0258デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/25(木) 21:13:44.78ID:VB93ltO10 >>252
正しく実装ってのが何を指してるのかよく分からないけど、その解説ってどこかにある?
正しく実装ってのが何を指してるのかよく分からないけど、その解説ってどこかにある?
259デフォルトの名無しさん (ワッチョイ 0f3e-NJGG)
2020/06/25(木) 23:23:06.88ID:Dxq2c9AW0 2ch (5ch) ではカーニハンは蟹飯とか呼ばれたりするのも普通だからなー。
さんを付けた方がすわりが良いと思うなら付けてもいいが、
ここでは雑に言っても文句は出ないよ。
敬称を付けなきゃ敬意がないってわけでもないし。
さんを付けた方がすわりが良いと思うなら付けてもいいが、
ここでは雑に言っても文句は出ないよ。
敬称を付けなきゃ敬意がないってわけでもないし。
260デフォルトの名無しさん (ワッチョイ 8f46-rLul)
2020/06/25(木) 23:35:03.55ID:kZgmLzec0 蟹めしとしか読めない。
261252 (ワッチョイ 0f7b-Yzg9)
2020/06/26(金) 07:00:11.04ID:Ks2Lu7GD0 >>258 の人に質問されたのでちょこっと書庫をひっくり返してみた。
書籍資料しか示せないし、古い本だから見つけるのは大変かも知れんけど。
今回は「さん」無しで書かせてもらう。人名が多くてやかましくなるでな。
カーニハンによる言及は『プログラミング作法』(ASCII)の第2章。
見直して気づいたけどベントリーからの直接の引用ではなかった。
あと、この本はカーニハンとパイクの共著だったので訂正させてもらう。
ベントリーによる2分探索法は『プログラム設計の着想』(近代科学社)の第4章。
ここに「ベル研とIBMで試したら2時間かけて正しく書けたのは10%」と出てる。
この章をまるまる使って、二分探索ルーチンを題材に、正しいプログラムを書く
手順を説明してるが、使用言語は擬似コードとBASICの方言。
補足としてネット情報 Wikipedia 「二分探索」ページ
特に「実装上の間違い」の部分が興味深いかと。
書籍資料しか示せないし、古い本だから見つけるのは大変かも知れんけど。
今回は「さん」無しで書かせてもらう。人名が多くてやかましくなるでな。
カーニハンによる言及は『プログラミング作法』(ASCII)の第2章。
見直して気づいたけどベントリーからの直接の引用ではなかった。
あと、この本はカーニハンとパイクの共著だったので訂正させてもらう。
ベントリーによる2分探索法は『プログラム設計の着想』(近代科学社)の第4章。
ここに「ベル研とIBMで試したら2時間かけて正しく書けたのは10%」と出てる。
この章をまるまる使って、二分探索ルーチンを題材に、正しいプログラムを書く
手順を説明してるが、使用言語は擬似コードとBASICの方言。
補足としてネット情報 Wikipedia 「二分探索」ページ
特に「実装上の間違い」の部分が興味深いかと。
262デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/26(金) 07:30:17.89ID:zNtEkj210263デフォルトの名無しさん (スプッッ Sde3-WMoV)
2020/06/26(金) 07:30:54.43ID:CbN2WAX/d 見てみたけど...
アルゴリズムの問題じゃなくて
ただのインデックスのオーバーフローか
インデックスが計算途中でオーバーフローする心配をするなら
要素数自体がintの範囲を越える心配やメモリ不足の心配もしないと
アルゴリズムの問題じゃなくて
ただのインデックスのオーバーフローか
インデックスが計算途中でオーバーフローする心配をするなら
要素数自体がintの範囲を越える心配やメモリ不足の心配もしないと
264デフォルトの名無しさん (スプッッ Sde3-WMoV)
2020/06/26(金) 07:33:24.14ID:CbN2WAX/d intじゃ足りないかもしれないから
size_tじゃないとバグとか言い出すのか
くだらん
size_tじゃないとバグとか言い出すのか
くだらん
265デフォルトの名無しさん (スプッッ Sde3-WMoV)
2020/06/26(金) 07:37:26.08ID:CbN2WAX/d 斜辺を求めるコードも
sqrt(a*a+b*b)
なんて書いたらバグだと言われちゃうね
sqrt(a*a+b*b)
なんて書いたらバグだと言われちゃうね
266デフォルトの名無しさん (ワッチョイ 0f97-h9M3)
2020/06/26(金) 07:53:21.24ID:R6SXx1iE0 まあ、ビット数の少ないCPUを使ってた頃はオーバーフローで実際にバグの挙動を示していたこともあったのかもね。
64bitになって、今しばらくはインデックスの足し算をいい加減な順番で行ってもオーバーフローになるほど実メモリが積めなそうだけども。
64bitになって、今しばらくはインデックスの足し算をいい加減な順番で行ってもオーバーフローになるほど実メモリが積めなそうだけども。
267デフォルトの名無しさん (ワッチョイ 3f0e-NJGG)
2020/06/26(金) 08:08:32.76ID:tBxKhrZw0 >>265
aとbがintなのにキャストしないタコいたら許さん
aとbがintなのにキャストしないタコいたら許さん
268デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/26(金) 08:22:33.07ID:zNtEkj210 >>263
だからアルゴリズムじゃなくて実装の問題だって話なんだろ。
そして型が int だとか size_t だとかの問題でもない。
どんな型であろうと計算の途中でその型をオーバーフローする可能性がある式だというのが問題であり、扱ってるデータではオーバーフローしないことを意識した上でそういう式を選んでるのかたまたまそういう条件になってるのかは大違いってこと。
最近は64bitだからいちいちそんなこと考える必要もないというなら、それは違うだろと(検索対象がメモリで64bitに及ばないメモリ量の環境でしか使わないコードだという考慮くらいは必要)。
特にライブラリなんかでは、インデックスの許容範囲がその型の許容範囲より狭いならば明記しなければならない。
だからアルゴリズムじゃなくて実装の問題だって話なんだろ。
そして型が int だとか size_t だとかの問題でもない。
どんな型であろうと計算の途中でその型をオーバーフローする可能性がある式だというのが問題であり、扱ってるデータではオーバーフローしないことを意識した上でそういう式を選んでるのかたまたまそういう条件になってるのかは大違いってこと。
最近は64bitだからいちいちそんなこと考える必要もないというなら、それは違うだろと(検索対象がメモリで64bitに及ばないメモリ量の環境でしか使わないコードだという考慮くらいは必要)。
特にライブラリなんかでは、インデックスの許容範囲がその型の許容範囲より狭いならば明記しなければならない。
269デフォルトの名無しさん (スプッッ Sddf-WMoV)
2020/06/26(金) 08:51:08.83ID:ulI8ykG3d270デフォルトの名無しさん (スプッッ Sddf-WMoV)
2020/06/26(金) 08:55:01.02ID:ulI8ykG3d271デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/26(金) 09:27:28.43ID:zNtEkj210272デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/26(金) 09:39:45.10ID:zNtEkj210 >>271
a & 1 にカッコ忘れてるのは多目に見て
a & 1 にカッコ忘れてるのは多目に見て
273デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/26(金) 10:09:23.28ID:zNtEkj210274デフォルトの名無しさん (ワッチョイ 7f69-H7K1)
2020/06/26(金) 10:12:30.36ID:DHczgJjy0 ビットand の & の優先順位が低いのがすげー気になるマン
275デフォルトの名無しさん (スプッッ Sde3-WMoV)
2020/06/26(金) 10:24:55.68ID:0ez7fC22d >>271
aが小さいとダメだからバグです
aが小さいとダメだからバグです
276デフォルトの名無しさん (ブーイモ MM0f-Tpb5)
2020/06/26(金) 11:51:33.67ID:CsRb/b6RM 確かに、掛け算並みに優先度高くても良い気がする
277デフォルトの名無しさん (スプッッ Sddf-WMoV)
2020/06/26(金) 12:06:06.43ID:wPd6FHznd 比較より低いのは仕様バグだな
278デフォルトの名無しさん (ワッチョイ 3ff9-5fXH)
2020/06/26(金) 12:54:54.87ID:hOK/Kg/V0 a,bがdoubleでsqrt(a*a+b*b)以外にどう書けと
279デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/26(金) 13:34:59.23ID:zNtEkj210 >>278
もし double でも計算途中でオーバーフローする可能性があるなら、最初に適当な係数の平方で a b を割って計算してから係数を掛けるとか?
あるいは long double が使えるなら単純にそれで計算するとか。
逆に言えば、オーバーフローする可能性があるならなんとかしないといけないわけだから、なんの変形もせずオーバーフローするに任せたらそれこそバグでしょうよ。
もし double でも計算途中でオーバーフローする可能性があるなら、最初に適当な係数の平方で a b を割って計算してから係数を掛けるとか?
あるいは long double が使えるなら単純にそれで計算するとか。
逆に言えば、オーバーフローする可能性があるならなんとかしないといけないわけだから、なんの変形もせずオーバーフローするに任せたらそれこそバグでしょうよ。
280デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/26(金) 13:41:41.84ID:zNtEkj210281デフォルトの名無しさん (ブーイモ MMb3-R4wo)
2020/06/26(金) 14:27:07.38ID:QICJMmXvM doubleでオーバーフローって、10の何乗を想定してる?
282デフォルトの名無しさん (ワッチョイ 4f19-IZ2D)
2020/06/26(金) 15:19:41.24ID:gU0A9MqI0 aとbの差が大きいときでしょ
283デフォルトの名無しさん (ブーイモ MMb3-R4wo)
2020/06/26(金) 15:43:00.88ID:QICJMmXvM それオーバーフローじゃないし、
情報落ちのことだとすればsqrt(a*a+b*b)をどう工夫して防げと?
情報落ちのことだとすればsqrt(a*a+b*b)をどう工夫して防げと?
284デフォルトの名無しさん (ワッチョイ 3f0e-NJGG)
2020/06/26(金) 16:10:21.31ID:tBxKhrZw0285デフォルトの名無しさん (ブーイモ MMb3-R4wo)
2020/06/26(金) 16:42:15.29ID:QICJMmXvM で、宇宙の観測可能な距離をヨクトメートル単位で表したら?
286デフォルトの名無しさん (ワッチョイ 0f97-h9M3)
2020/06/26(金) 16:44:50.44ID:R6SXx1iE0 デカルト距離は物理的な空間でしか使われないわけじゃないしなあ(屁理屈
287デフォルトの名無しさん (ワッチョイ 3f0e-NJGG)
2020/06/26(金) 17:02:33.96ID:tBxKhrZw0 64bitあれば大きいほうはエクサ、小さい方はアトまで扱える
今飲んでるコーヒーの液面からカップの底までが1アトパーセクくらい
今飲んでるコーヒーの液面からカップの底までが1アトパーセクくらい
288デフォルトの名無しさん (ワイーワ2 FFbf-/Fs/)
2020/06/26(金) 17:41:45.88ID:PjbtVFt+F289デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/26(金) 17:47:26.42ID:zNtEkj210 double で何やったらオーバーフローするのかってことじゃなく、必要な対象を計算するのに必要な型や計算手順は何かってことだろ。
掛け算や指数を扱うならオーバーフローについては普通に考慮するもんだと思うけど、そうじゃないのか?
今扱おうとしてる対象について考慮してるから double なら大丈夫だと考えてるんだろ。
で二分木については足し算がオーバーフローする可能性が盲点ってことで、なるほどと思うべき所だろ。
アルゴリズム上も計算途中に最初に与えた imax を超える値が現れるようには見えないんだから。
今時 double も 64bit整数も当たり前だったとしても、SIMD使いたいからデータ長を抑えたいなんてこともあるでしょ。
掛け算や指数を扱うならオーバーフローについては普通に考慮するもんだと思うけど、そうじゃないのか?
今扱おうとしてる対象について考慮してるから double なら大丈夫だと考えてるんだろ。
で二分木については足し算がオーバーフローする可能性が盲点ってことで、なるほどと思うべき所だろ。
アルゴリズム上も計算途中に最初に与えた imax を超える値が現れるようには見えないんだから。
今時 double も 64bit整数も当たり前だったとしても、SIMD使いたいからデータ長を抑えたいなんてこともあるでしょ。
290デフォルトの名無しさん (ワイーワ2 FFbf-/Fs/)
2020/06/26(金) 17:54:06.22ID:PjbtVFt+F 一般論で答えても叩かれる
質問内容に特化して答えても叩かれる
どうしろと
質問内容に特化して答えても叩かれる
どうしろと
291デフォルトの名無しさん (ブーイモ MM0f-Tpb5)
2020/06/26(金) 17:56:45.81ID:9etEQyfpM 俺くらいになればケッセルランを12パーセクで飛ぶくらい余裕
292デフォルトの名無しさん (スプッッ Sd5f-WMoV)
2020/06/26(金) 19:11:05.35ID:EPLAnBEId293デフォルトの名無しさん (スプッッ Sd5f-WMoV)
2020/06/26(金) 19:13:45.24ID:EPLAnBEId294デフォルトの名無しさん (アウアウウー Sad3-u/pE)
2020/06/26(金) 21:15:32.77ID:TyyL07+Ya >>240
みんなかどうかは知らんがおれは書けるな
みんなかどうかは知らんがおれは書けるな
295デフォルトの名無しさん (アウアウウー Sad3-u/pE)
2020/06/26(金) 21:18:13.75ID:TyyL07+Ya >>253
カニチャーハン
カニチャーハン
296デフォルトの名無しさん (ワッチョイ 3f7d-naG6)
2020/06/26(金) 21:39:07.24ID:/YkOh9yY0 int x=0;
int y=(x=1)+(x=2);
とするとyが4になってしまいます。
3だと思うのですが。
int y=(x=1)+(x=2);
とするとyが4になってしまいます。
3だと思うのですが。
>>271
>オーバーフロー回避を意識する必要があるなら a / 2 * b とか?
それは回避したことになりません、演算子 / 2 と * b のどちらが先に処理されるかはコンパイラが籤引きで決めるか独断偏見で決め打ちするのでは?
>オーバーフロー回避を意識する必要があるなら a / 2 * b とか?
それは回避したことになりません、演算子 / 2 と * b のどちらが先に処理されるかはコンパイラが籤引きで決めるか独断偏見で決め打ちするのでは?
299デフォルトの名無しさん (ワッチョイ 8fe6-vKxb)
2020/06/26(金) 21:52:32.85ID:Sd6G194T0300はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0f3e-NJGG)
2020/06/26(金) 21:54:17.86ID:gtOtInFM0301デフォルトの名無しさん (ワッチョイ 8fe6-vKxb)
2020/06/26(金) 21:57:33.08ID:Sd6G194T0 int x=0;
x=1;
x=2;
int y=x+x; //(2+2)
という話になっているのだと思われ
x=1;
x=2;
int y=x+x; //(2+2)
という話になっているのだと思われ
302デフォルトの名無しさん (ワッチョイ 8fe6-vKxb)
2020/06/26(金) 22:03:10.60ID:Sd6G194T0 あとは優しいおじい・・紳士様がアセンブラでは実際どうなっているかを解説してくれるはず
303デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/26(金) 22:32:16.04ID:zNtEkj210 >>297
自信を持っては言えないけど、/ 2 してから * b するのとその逆とでは結果が違うんだから、書いた式と結果が異なる可能性がある計算順にコンパイラがいじるものかね?
例えば各項を関数として a() / c() * b() にした場合、a 〜 c がどの順で実行されるか、つまり項の評価順は保証されないけどそれら結果を使った計算順は式通りになるんじゃないの?
でももし仮にそういう懸念があるなら、カッコ付けるなりそれでだめなら2手に分けるなりすればいいんじゃね。
自信を持っては言えないけど、/ 2 してから * b するのとその逆とでは結果が違うんだから、書いた式と結果が異なる可能性がある計算順にコンパイラがいじるものかね?
例えば各項を関数として a() / c() * b() にした場合、a 〜 c がどの順で実行されるか、つまり項の評価順は保証されないけどそれら結果を使った計算順は式通りになるんじゃないの?
でももし仮にそういう懸念があるなら、カッコ付けるなりそれでだめなら2手に分けるなりすればいいんじゃね。
304デフォルトの名無しさん (ブーイモ MMb3-R4wo)
2020/06/26(金) 22:48:16.05ID:GYQIE3peM >>302
アセンブラだとxに2入れて、yに4入れて、おしまいだろうな。
アセンブラだとxに2入れて、yに4入れて、おしまいだろうな。
305デフォルトの名無しさん (ワッチョイ 3f85-NJGG)
2020/06/26(金) 23:31:20.43ID:ONx8T6wJ0 誰も逆汗しないのな。
一昔前だったら
A「俺がやってみるから待ってろ。」
B「いや、俺がやるから(ry」
C「いやいや、俺こそが」
AB「「どうぞどうぞ」」
の前振りだったのに。
VC++2019のデバッグモード
int y = (x = 1) + (x = 2);
00C118FF mov dword ptr [x],1
00C11906 mov dword ptr [x],2
00C1190D mov eax,dword ptr [x]
00C11910 add eax,dword ptr [x]
00C11913 mov dword ptr [y],eax
最適化したら 304 になるんだろうけど。
一昔前だったら
A「俺がやってみるから待ってろ。」
B「いや、俺がやるから(ry」
C「いやいや、俺こそが」
AB「「どうぞどうぞ」」
の前振りだったのに。
VC++2019のデバッグモード
int y = (x = 1) + (x = 2);
00C118FF mov dword ptr [x],1
00C11906 mov dword ptr [x],2
00C1190D mov eax,dword ptr [x]
00C11910 add eax,dword ptr [x]
00C11913 mov dword ptr [y],eax
最適化したら 304 になるんだろうけど。
306デフォルトの名無しさん (ブーイモ MMb3-R4wo)
2020/06/26(金) 23:34:17.38ID:GYQIE3peM クソ冗長なコードだな
307はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0f3e-NJGG)
2020/06/27(土) 00:56:28.31ID:VCabyp7F0 >>297
/ と * の優先順位は等しくて左結合なんだから疑問の余地はない。
a/2*b と書いてあったら a を 2 で割ってからそれに b をかける。
またはそうしたかのように見えるような振舞いをすることは保証される。
そうなってなかったらコンパイラのバグだよ。
/ と * の優先順位は等しくて左結合なんだから疑問の余地はない。
a/2*b と書いてあったら a を 2 で割ってからそれに b をかける。
またはそうしたかのように見えるような振舞いをすることは保証される。
そうなってなかったらコンパイラのバグだよ。
308デフォルトの名無しさん (ワッチョイ 3f85-NJGG)
2020/06/27(土) 01:04:32.76ID:zYxBmbbI0 「回避手段があるならバグとしない。」
309デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/27(土) 01:14:50.37ID:qKnmoagb0 例えばスケーリングなんかの時、オーバーフローを避けるため割り算やってから掛け算することもあるし、丸め誤差を小さくするため掛け算やってから割り算することもあるし、
意図して式書いてるんだから順序を勝手に変えられたらやっぱり大問題だよな。
意図して式書いてるんだから順序を勝手に変えられたらやっぱり大問題だよな。
310デフォルトの名無しさん (ワッチョイ 4fb3-WMoV)
2020/06/27(土) 07:08:40.12ID:TsX0h7IG0311デフォルトの名無しさん (ワッチョイ 4fb3-WMoV)
2020/06/27(土) 07:18:53.17ID:TsX0h7IG0 >>311
ありがとうございます、たしかに副作用完了点に対する私の誤解です
@値の評価の問題、と、A副作用の問題、とを完全にごった煮にしてました、今回は副作用は関係ない…
>QZがここまでアホだとは
現在までの推移を客観的に観察している限りにおいて、これはスランプでは済まず、私はこれからもっと阿呆になっていくのだろうと私は予測しています
https://mevius.5ch.net/test/read.cgi/tech/1434079972/ へのエントリー数もパッタリ止まってもう増えそうもありません
ありがとうございます、たしかに副作用完了点に対する私の誤解です
@値の評価の問題、と、A副作用の問題、とを完全にごった煮にしてました、今回は副作用は関係ない…
>QZがここまでアホだとは
現在までの推移を客観的に観察している限りにおいて、これはスランプでは済まず、私はこれからもっと阿呆になっていくのだろうと私は予測しています
https://mevius.5ch.net/test/read.cgi/tech/1434079972/ へのエントリー数もパッタリ止まってもう増えそうもありません
313デフォルトの名無しさん (ワッチョイ 3f01-76DX)
2020/06/27(土) 08:38:40.98ID:Fil4ka9J0 >>296
鼻から悪魔ネタはもうお腹いっぱい
鼻から悪魔ネタはもうお腹いっぱい
314デフォルトの名無しさん (ワッチョイ 3f01-76DX)
2020/06/27(土) 08:39:33.42ID:Fil4ka9J0 >>309
行を分けて書けばいいだけ
行を分けて書けばいいだけ
315デフォルトの名無しさん (ワッチョイ 3f0e-NJGG)
2020/06/27(土) 08:42:53.25ID:aqzZKmXR0 アホが使うと使い手とそっくりな動きになる
Cとはそういうものだ
Cとはそういうものだ
316デフォルトの名無しさん (ワッチョイ 4fb3-WMoV)
2020/06/27(土) 08:45:36.41ID:TsX0h7IG0317デフォルトの名無しさん (ワッチョイ 4fb3-WMoV)
2020/06/27(土) 08:48:05.70ID:TsX0h7IG0318デフォルトの名無しさん (ワッチョイ 4fb3-WMoV)
2020/06/27(土) 08:51:31.93ID:TsX0h7IG0 オーバーフローを最近勉強して
それだけが気になって
それを回避するために別の問題を起こす
初心者君のたわごとだから
放置すればいいんだけど
それだけが気になって
それを回避するために別の問題を起こす
初心者君のたわごとだから
放置すればいいんだけど
319デフォルトの名無しさん (ワッチョイ 3f0e-NJGG)
2020/06/27(土) 08:57:09.10ID:aqzZKmXR0 どんくらいまでの誤差を許容すべきかは
なかなか数学的な考えどころ
なかなか数学的な考えどころ
320デフォルトの名無しさん (ワッチョイ 4fb3-WMoV)
2020/06/27(土) 09:11:00.12ID:TsX0h7IG0 許容誤差
パラメーターの対応範囲
コスト
保守性、可読性、...
これらを総合的に考えてコードを作るのが普通
1個だけの要素が気になるといびつな実装になる
色々な規格も偏った視野で作られる事が多くて
いびつな物が多い
それぞれの項目を勉強するのはもちろん良いこと
パラメーターの対応範囲
コスト
保守性、可読性、...
これらを総合的に考えてコードを作るのが普通
1個だけの要素が気になるといびつな実装になる
色々な規格も偏った視野で作られる事が多くて
いびつな物が多い
それぞれの項目を勉強するのはもちろん良いこと
321デフォルトの名無しさん (ワッチョイ 3f4f-NJGG)
2020/06/27(土) 09:23:41.94ID:6HwwPL420 >>317
両方起こりえる状況なら変数の精度不足というバグか。
両方起こりえる状況なら変数の精度不足というバグか。
322デフォルトの名無しさん (ワッチョイ 3f01-76DX)
2020/06/27(土) 09:32:46.13ID:Fil4ka9J0 >>316
ああアホには「文」を分けると書かないとわからんかw
ああアホには「文」を分けると書かないとわからんかw
323デフォルトの名無しさん (ワッチョイ 4fb3-WMoV)
2020/06/27(土) 09:40:26.98ID:TsX0h7IG0324デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/27(土) 09:50:13.95ID:qKnmoagb0 オーバーフローの話は (imax + imin) / 2 ではなく imin + (imax - imin) 2 と書けば回避できるってのが発端なわけだけど、何がそんなに気にくわないんだ?
盲点とも言えるよくやりがちなことなんだから、素直に吸収しときゃいいんじゃないの?
盲点とも言えるよくやりがちなことなんだから、素直に吸収しときゃいいんじゃないの?
325デフォルトの名無しさん (ワッチョイ 4fb3-WMoV)
2020/06/27(土) 10:02:32.81ID:TsX0h7IG0326デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/27(土) 10:08:05.06ID:qKnmoagb0 >>325
それってどれのこと?
それってどれのこと?
327デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/27(土) 10:11:14.54ID:qKnmoagb0328デフォルトの名無しさん (ワッチョイ 4fb3-WMoV)
2020/06/27(土) 10:20:58.17ID:TsX0h7IG0 元はカーニハンとかいう人だろ
その影響を受けたのが>>268
オーバーフローの可能性が無いなら
前者のままでも良いっていうか
前者の方が良い場合もある
コストは確実に前者の方が安い
リニア検索ではなくてコードサイズの大きな2分検索を使うあたり
パフォーマンスが全くどうでも良い所ではないということもわかるわけで
移植性は後者、コストは前者、
可読性は微妙だが前者?
intよりsize_tを使うべきなんて思ってないよ
使う範囲、使う環境、移植性、...
などなどでどうするべきかは変わる
その影響を受けたのが>>268
オーバーフローの可能性が無いなら
前者のままでも良いっていうか
前者の方が良い場合もある
コストは確実に前者の方が安い
リニア検索ではなくてコードサイズの大きな2分検索を使うあたり
パフォーマンスが全くどうでも良い所ではないということもわかるわけで
移植性は後者、コストは前者、
可読性は微妙だが前者?
intよりsize_tを使うべきなんて思ってないよ
使う範囲、使う環境、移植性、...
などなどでどうするべきかは変わる
329デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/27(土) 10:23:22.01ID:qKnmoagb0330デフォルトの名無しさん (ワッチョイ 4fb3-WMoV)
2020/06/27(土) 10:23:42.01ID:TsX0h7IG0 C言語スレだから
チープな8bit環境から
スーパーコンピューターまで
様々な所で使われる
重視すべき項目は時と場合で大きく違う
チープな8bit環境から
スーパーコンピューターまで
様々な所で使われる
重視すべき項目は時と場合で大きく違う
331デフォルトの名無しさん (ワッチョイ 4fb3-WMoV)
2020/06/27(土) 10:25:33.79ID:TsX0h7IG0332デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/27(土) 10:29:38.97ID:qKnmoagb0333デフォルトの名無しさん (ワッチョイ 4fb3-WMoV)
2020/06/27(土) 10:49:08.20ID:TsX0h7IG0334デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/27(土) 11:08:27.27ID:qKnmoagb0 >>333
たぶん論旨は伝わったと思うので追い打ちかけるつもりではないが、レス付けるに当たっては「オーバーフローを回避するなら」と必ず付けてるし、扱う値の範囲を鑑みて型が充分か考慮しろと言ってるだけのことな。
扱うのが宇宙の座標をメートル単位で、くらいの話なら double でもオーバーフロー的な問題は無いなとか、
でももしシミュレーションで宇宙を100次元空間として体積を求める話だったら double でも大丈夫かな?とか考慮するでしょ。
まあそんなケースだと値の大きさより有効桁の方が心配だけど、なんにしてもとりあえずデカい型だから大丈夫wなんて漫然と思ってるならただのアホという至極当然の話。
たぶん論旨は伝わったと思うので追い打ちかけるつもりではないが、レス付けるに当たっては「オーバーフローを回避するなら」と必ず付けてるし、扱う値の範囲を鑑みて型が充分か考慮しろと言ってるだけのことな。
扱うのが宇宙の座標をメートル単位で、くらいの話なら double でもオーバーフロー的な問題は無いなとか、
でももしシミュレーションで宇宙を100次元空間として体積を求める話だったら double でも大丈夫かな?とか考慮するでしょ。
まあそんなケースだと値の大きさより有効桁の方が心配だけど、なんにしてもとりあえずデカい型だから大丈夫wなんて漫然と思ってるならただのアホという至極当然の話。
335デフォルトの名無しさん (ワッチョイ 3f01-76DX)
2020/06/27(土) 12:40:30.36ID:Fil4ka9J0336デフォルトの名無しさん (スプッッ Sde3-WMoV)
2020/06/27(土) 12:53:15.33ID:F1FZoULud >>334
状況によって適切なコードを選ぶべきと思ってるなら別にいい
そうじゃなさそうだったので
「間違ってる」「バグ」「正しくない」という主張じゃなかった?
2分検索が10%しか正しく書けないなんてことはないと思うんだがね
状況によって適切なコードを選ぶべきと思ってるなら別にいい
そうじゃなさそうだったので
「間違ってる」「バグ」「正しくない」という主張じゃなかった?
2分検索が10%しか正しく書けないなんてことはないと思うんだがね
337デフォルトの名無しさん (ワッチョイ 0fca-bwNs)
2020/06/27(土) 13:02:32.88ID:qKnmoagb0 >>336
>2分検索が10%しか正しく書けないなんてことはないと思うんだがね
そう、ここが気になったんだけど、でももし二分検索を書いたこと無い人がアルゴリズムを見て一発で動作するコードが書けるか?という話なら、案外その程度かもと思ったり。
分割時の端数処理の考慮が不適切でインデックスが変化せず無限ループに陥ったり、検索から抜け落ちる要素が出たり、要素数が0〜2ないし3くらいの範囲でうまく動かなかったり。
ちょっと動かせばすぐ修正点に気付いて動くコードに仕立てられるだろうけど、ぶっつけで動かせるかと言ったら案外難しいんじゃね。
>2分検索が10%しか正しく書けないなんてことはないと思うんだがね
そう、ここが気になったんだけど、でももし二分検索を書いたこと無い人がアルゴリズムを見て一発で動作するコードが書けるか?という話なら、案外その程度かもと思ったり。
分割時の端数処理の考慮が不適切でインデックスが変化せず無限ループに陥ったり、検索から抜け落ちる要素が出たり、要素数が0〜2ないし3くらいの範囲でうまく動かなかったり。
ちょっと動かせばすぐ修正点に気付いて動くコードに仕立てられるだろうけど、ぶっつけで動かせるかと言ったら案外難しいんじゃね。
338デフォルトの名無しさん (ワッチョイ 0fda-PIQW)
2020/06/27(土) 14:22:51.51ID:BPJhbq4z0 クイックソートを一発で書けと言われるとちょっとつらい。
あまりにうろ覚えすぎる。
30分待ってやる
と言われれば思い出しながら余裕を持って書ける。かな?
いやどうだろう?
ソートは完璧だろうけど、アルゴリズムはあやしいな
「クイックに似た何かソート」になりそうかも
あまりにうろ覚えすぎる。
30分待ってやる
と言われれば思い出しながら余裕を持って書ける。かな?
いやどうだろう?
ソートは完璧だろうけど、アルゴリズムはあやしいな
「クイックに似た何かソート」になりそうかも
>>296,298-301
些細なことですが、>>296,298,299 の結果は納得いかないです
>int y = (x = 1) + (x = 2);
たしかに gcc/clang とも警告は出ますが、しかしそれはシーケンスポイント間で i を複数回書き込んでいる、という警告で、それは i の値が 2, 5 のいずれかになるか不確定という意味ですね
しかし演算子 + のオペランドの値は確定していて、すなわち 2 と 5
だから y の値は、この場合は確定的に 7 になるはずです
実際、手元の clang(8,0,1) でコンパイルした場合、結果は y = 7 で上の解釈と合致します。
私は gcc がバグっていると思いました。
些細なことですが、>>296,298,299 の結果は納得いかないです
>int y = (x = 1) + (x = 2);
たしかに gcc/clang とも警告は出ますが、しかしそれはシーケンスポイント間で i を複数回書き込んでいる、という警告で、それは i の値が 2, 5 のいずれかになるか不確定という意味ですね
しかし演算子 + のオペランドの値は確定していて、すなわち 2 と 5
だから y の値は、この場合は確定的に 7 になるはずです
実際、手元の clang(8,0,1) でコンパイルした場合、結果は y = 7 で上の解釈と合致します。
私は gcc がバグっていると思いました。
>>339
×シーケンスポイント間で i を複数回書き込んでいる、という警告で、それは i の値が 2, 5 のいずれかになるか不確定
○シーケンスポイント間で x を複数回書き込んでいる、という警告で、それは x の値が 2, 5 のいずれかになるか不確定
×シーケンスポイント間で i を複数回書き込んでいる、という警告で、それは i の値が 2, 5 のいずれかになるか不確定
○シーケンスポイント間で x を複数回書き込んでいる、という警告で、それは x の値が 2, 5 のいずれかになるか不確定
341デフォルトの名無しさん (ガラプー KK83-hH/T)
2020/06/27(土) 16:04:40.17ID:WNNU6Y/YK 既出かもしれんが
>int y = (x = 1) + (x = 2);
演算順は
(x = 1)
(x = 2)
左辺値 x + 左辺値 x
y = その結果
なんじゃないの?
>int y = (x = 1) + (x = 2);
演算順は
(x = 1)
(x = 2)
左辺値 x + 左辺値 x
y = その結果
なんじゃないの?
>>341 ありがとうございます
JISX0301 の代入演算子をみると
>「6.5.16 セマンティクス「代入式は、代入後の左オペランドの値を持つが、左辺値でない」
つまり
式 x = 2
の値は 2 ではなく x というわけですか…なるほど
JISX0301 の代入演算子をみると
>「6.5.16 セマンティクス「代入式は、代入後の左オペランドの値を持つが、左辺値でない」
つまり
式 x = 2
の値は 2 ではなく x というわけですか…なるほど
344デフォルトの名無しさん (アウアウエー Sabf-TUf5)
2020/06/27(土) 18:53:06.85ID:fF6t87uZa 式の値は x = 1 なら 1 だけど、その式の値が x と同一といわれると微妙な気が
コンパイラによって結果が変わってきそうな気も
コンパイラによって結果が変わってきそうな気も
345デフォルトの名無しさん (ワッチョイ 3f85-NJGG)
2020/06/27(土) 19:00:52.23ID:zYxBmbbI0 数学の変数とプログラムの変数は別物。
346デフォルトの名無しさん (ワッチョイ 8fe6-NJGG)
2020/06/27(土) 20:34:42.19ID:5xR8poHP0 そもそもイコールではなくて代入だもんね
347デフォルトの名無しさん (ワッチョイ 4fb3-WMoV)
2020/06/27(土) 20:36:44.26ID:TsX0h7IG0 比較が =
代入が :=
の方が良かったと思う
代入が :=
の方が良かったと思う
348デフォルトの名無しさん (ワッチョイ 8fe6-NJGG)
2020/06/27(土) 20:37:36.35ID:5xR8poHP0 :3
349デフォルトの名無しさん (ワッチョイ 4f7f-Tpb5)
2020/06/27(土) 20:39:21.93ID:ItnTp6fM0 >>342
寝るの早いよ!
寝るの早いよ!
350デフォルトの名無しさん (ワッチョイ 3f85-NJGG)
2020/06/27(土) 20:42:32.55ID:zYxBmbbI0 つ ぴゅう太BASIC
351デフォルトの名無しさん (ワッチョイ 3f0e-NJGG)
2020/06/27(土) 20:44:48.50ID:aqzZKmXR0 >>347
PASCALが嫌いな人が作った言語でか?
PASCALが嫌いな人が作った言語でか?
352デフォルトの名無しさん (ワッチョイ 3fad-p8b5)
2020/06/27(土) 20:56:58.25ID:YxSvZ5UV0 代入も比較も同じ = 記号なんだけど代入した結果を利用できない言語はあるね。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★2 [蚤の市★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- 【悲報】維新の政治資金でガールズバー、高市首相「良いか悪いかは国民の皆さまが判断されること」 [115996789]
- 【マギレコ】VIPでマギアレコード&マギアエクセドラ【まどドラ】
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 【悲報】柳原司奈子さん救急搬送
- いじめられてる男子中学生だけど質問ある?
