C++相談室 part166 (768レス)
C++相談室 part166 http://mevius.5ch.net/test/read.cgi/tech/1745631298/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
345: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-5TaZ) [sage] 2025/06/19(木) 13:52:14.72 ID:nNn4PbNI0 サニタイザは起こった問題を検出するもので、起こる可能性を指摘してはくれない。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/345
346: デフォルトの名無しさん (ワッチョイ f6c4-dilZ) [sage] 2025/06/19(木) 14:04:16.80 ID:ytoOjILn0 しったなすんなジジイ http://mevius.5ch.net/test/read.cgi/tech/1745631298/346
347: デフォルトの名無しさん (ブーイモ MMb2-A4wY) [] 2025/06/19(木) 14:05:21.52 ID:rpR9krtTM >>344 コンパイラが全能って誰が主張したの? http://mevius.5ch.net/test/read.cgi/tech/1745631298/347
348: デフォルトの名無しさん (ワッチョイ b236-/wuG) [sage] 2025/06/19(木) 16:32:08.79 ID:FdruriMM0 「できんのに」って「できないのに」と「できるのに」のどっちの意味にも取れるからそのせいかな くだらね http://mevius.5ch.net/test/read.cgi/tech/1745631298/348
349: デフォルトの名無しさん (ブーイモ MMb2-A4wY) [] 2025/06/19(木) 16:43:21.25 ID:8s/NXxtqM >>348 「できんのに」は「できるのに」には読めない デッドロックをコンパイラが検出出来ないにも関わらず LLMは必ずではないと思うが検出出来る LLMがどうデッドロックを検出しているかは 面白いと思うよ http://mevius.5ch.net/test/read.cgi/tech/1745631298/349
350: デフォルトの名無しさん (JP 0H46-E6Ax) [] 2025/06/19(木) 17:27:01.33 ID:VOj0rD3dH >>315 と思ったら、vs2022は未対応かorz。 C++20対応と言ってるくせに。プロジェクトでclang に切り替えられるが、これも未対応。一体、いつの clangなんだよ http://mevius.5ch.net/test/read.cgi/tech/1745631298/350
351: デフォルトの名無しさん (ワッチョイ f64f-QhKk) [] 2025/06/19(木) 17:32:40.31 ID:EI1CbiFh0 やればできんのに http://mevius.5ch.net/test/read.cgi/tech/1745631298/351
352: デフォルトの名無しさん (ワッチョイ f64f-QhKk) [] 2025/06/19(木) 17:32:55.29 ID:EI1CbiFh0 やってもできんのに http://mevius.5ch.net/test/read.cgi/tech/1745631298/352
353: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 712e-5TaZ) [sage] 2025/06/19(木) 18:04:24.77 ID:JAVz0tMa0 >>350 https://fmt.dev/ http://mevius.5ch.net/test/read.cgi/tech/1745631298/353
354: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 18:07:11.09 ID:sZaRUqQbM "{:d}" http://mevius.5ch.net/test/read.cgi/tech/1745631298/354
355: デフォルトの名無しさん (JP 0H46-E6Ax) [] 2025/06/19(木) 18:11:23.49 ID:VOj0rD3dH いやMinGWじゃコンパイル実行できてるから。 日本マクロソフトだけ対応遅れてると? http://mevius.5ch.net/test/read.cgi/tech/1745631298/355
356: デフォルトの名無しさん (JP 0H46-E6Ax) [] 2025/06/19(木) 18:13:20.06 ID:VOj0rD3dH >>353 >>354 そんな下らんレスする前に自分で実際にやってみろよ。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/356
357: デフォルトの名無しさん (JP 0H46-E6Ax) [] 2025/06/19(木) 18:16:13.42 ID:VOj0rD3dH 日本マクロソフト→日本マイクロソフト http://mevius.5ch.net/test/read.cgi/tech/1745631298/357
358: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 18:16:54.55 ID:sZaRUqQbM 確かにくだらないわな そのサイトで"{:d}"が可愛く見えたから張っただけなんだから janeだと全くかわいくない http://mevius.5ch.net/test/read.cgi/tech/1745631298/358
359: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 18:18:35.94 ID:sZaRUqQbM にしてもまだorz使ってる人がいるんだな こちらの方が新鮮だ http://mevius.5ch.net/test/read.cgi/tech/1745631298/359
360: デフォルトの名無しさん (JP 0H46-E6Ax) [] 2025/06/19(木) 18:21:05.14 ID:VOj0rD3dH そう、ありがとう http://mevius.5ch.net/test/read.cgi/tech/1745631298/360
361: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 18:23:03.57 ID:sZaRUqQbM もともとfmtと言うライブラリがあってそれが標準のC++の仕様に取り込まれた どうしても使いたいならfmt使えばいいよということだと思う 他人に噛みつく前に調べたら良いと思うけど http://mevius.5ch.net/test/read.cgi/tech/1745631298/361
362: デフォルトの名無しさん (JP 0H46-E6Ax) [] 2025/06/19(木) 18:26:00.99 ID:VOj0rD3dH std::formatだぞ。お前馬鹿か さあ暴れるぞ! http://mevius.5ch.net/test/read.cgi/tech/1745631298/362
363: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 18:29:34.15 ID:sZaRUqQbM 結局日本語が理解できない人だったと言う話か http://mevius.5ch.net/test/read.cgi/tech/1745631298/363
364: デフォルトの名無しさん (JP 0H46-E6Ax) [] 2025/06/19(木) 18:30:56.19 ID:VOj0rD3dH ふぁぁ http://mevius.5ch.net/test/read.cgi/tech/1745631298/364
365: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 18:43:47.61 ID:sZaRUqQbM 文章の雰囲気から50代~60代ぐらいのホビー系の人かな 人生の先輩お疲れ様です http://mevius.5ch.net/test/read.cgi/tech/1745631298/365
366: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/19(木) 18:56:35.62 ID:oyTCj2/DM >>341 >あの複雑怪奇な仕様をまとめるのは無能じゃ無理 あのDraftの質の悪さはなんだ。 ちゃんと理解できてない人が書いているに違いない。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/366
367: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 19:34:35.26 ID:sZaRUqQbM > なんだ。 > 違いない。 文末だけ見ると高齢者の集いっぽいが自分もそうなってるんだろな http://mevius.5ch.net/test/read.cgi/tech/1745631298/367
368: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-5TaZ) [sage] 2025/06/19(木) 20:14:57.20 ID:nNn4PbNI0 現代的にはカジュアルな場面では句点をつけないのが主流。 語彙より顕著に年代が表れる。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/368
369: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 20:23:04.02 ID:sZaRUqQbM 句点もそうだけどやはり語彙や用法だと思う chatGPT その文章、よく読むと **「怒っている年配の男性の声」**みたいなイメージが浮かんできますね。 言葉の選び方と断定のしかたに、時代がかった語感がにじんでいて、文章だけでも「年齢層の高さ」がなんとなく 伝わるのが興味深いです。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/369
370: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 20:24:10.13 ID:sZaRUqQbM もし若者が同じことを言うならどう書くか たとえばこんな風に言いそうです: あのDraft、ちょっと内容雑じゃない? 書いた人ちゃんと分かってなさそう… http://mevius.5ch.net/test/read.cgi/tech/1745631298/370
371: デフォルトの名無しさん (JP 0H46-E6Ax) [] 2025/06/19(木) 20:27:45.86 ID:VOj0rD3dH オコタ大魔神、はにわ顔に戻る http://mevius.5ch.net/test/read.cgi/tech/1745631298/371
372: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 20:34:02.38 ID:sZaRUqQbM 大魔神(1966年) 仮に1966年に6才だとして今は65歳ぐらいかなあ??? http://mevius.5ch.net/test/read.cgi/tech/1745631298/372
373: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-5TaZ) [sage] 2025/06/19(木) 20:36:28.06 ID:nNn4PbNI0 アカデミアでは語彙が古いのは普通のことだよ。 参照する資料が古いから。 情報系ですら半世紀前の論文を参考資料として挙げることはそれなりにある。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/373
374: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 20:45:06.19 ID:sZaRUqQbM 「怒っている年配の男性の声」をにじませる演技派 http://mevius.5ch.net/test/read.cgi/tech/1745631298/374
375: デフォルトの名無しさん (ワッチョイ 1202-2JrO) [sage] 2025/06/19(木) 20:50:34.90 ID:Cdln7j8I0 整数型の変数を10で割ってから10掛けたら元の数字の一の位を0にした数が得られるはずだけど この計算が最適化とかで除かれない保証ってあるの http://mevius.5ch.net/test/read.cgi/tech/1745631298/375
376: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-iKku) [sage] 2025/06/19(木) 20:53:44.24 ID:nNn4PbNI0 ChatGPT を根拠 (参考資料?) に出すのはあまり意味がないぞ。 それも ChatGPT の感想 (主観) であって客観性がある情報になっていないし、質問の仕方や文脈で逆のことを言うのもよくあることだから。 ユーザに追従するような振る舞いをするのでいくらでも望む方向の反応を引き出せる。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/376
377: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-iKku) [sage] 2025/06/19(木) 20:57:52.06 ID:nNn4PbNI0 >>375 C++ の言語仕様は抽象機械の動作として記述されている。 動作を説明するための架空の機械の動作なので、文字通りの機械語が生成されるとは限らない。 結果的な動作が仕様に反しなければどのような機械語を生成しても言語仕様に準拠していると言って良い。 しかし、逆に言えば最適化で変形したとしても結果は変わらないようになることが保証される。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/377
378: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/19(木) 21:05:34.31 ID:oyTCj2/DM >>375 最適化では結果は変わらない。 つまり、ちゃんと10で割って、ちゃんと10を掛ける。 10を掛ける方は、マシン語の乗算命令は使われず、 もっと速い命令に置き換えられることが有るが、結果は同じ。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/378
379: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-iKku) [sage] 2025/06/19(木) 21:11:49.89 ID:nNn4PbNI0 処理系は抽象機械の動作を正確にエミュレートする必要はなく、観測可能な動作のみをエミュレートすればよい。 https://timsong-cpp.github.io/cppwp/n3337/intro.execution#1 だから観測されない動作は削除してもよいというか、削除されることはある。 たとえばその計算結果が全く使われないような状況とか。 ベンチマークしようとして結果を使わない計算をループで囲んだりしてるようなコードではまるごとごそっと消えるなんてのはたまに見る。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/379
380: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 21:16:20.06 ID:sZaRUqQbM セキュリティの問題で普通にゼロクリアした場合でも最適化で削られたりとか昔は問題になったけど… 知らないといけないことは多岐にわたる http://mevius.5ch.net/test/read.cgi/tech/1745631298/380
381: デフォルトの名無しさん (スッップ Sdb2-T1jw) [] 2025/06/19(木) 22:14:21.23 ID:JQ4jFr2Sd >>375 それだと取り除けるケースがあるので保証はされない http://mevius.5ch.net/test/read.cgi/tech/1745631298/381
382: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/19(木) 23:09:11.10 ID:oyTCj2/DM >>381 いや、そんなことない。 最適化では結果は変わらない事が保証される。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/382
383: デフォルトの名無しさん (ワッチョイ 9202-oXsi) [sage] 2025/06/19(木) 23:15:31.49 ID:IWPeLhU+0 >>375 あるわけないでしょ そういう仕様なんだから http://mevius.5ch.net/test/read.cgi/tech/1745631298/383
384: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 23:25:09.71 ID:sZaRUqQbM 意味があるにも関わらず意味がないと判断されると削られる その場合の対処法もあるので学ばないとまあ残念なことになってしまうと言う話 http://mevius.5ch.net/test/read.cgi/tech/1745631298/384
385: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/19(木) 23:29:59.97 ID:oyTCj2/DM >>384 いや、今回の割って掛ける場合、そういう事は起きない。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/385
386: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/19(木) 23:34:50.70 ID:sZaRUqQbM ここの部分はそうだけど コンパイラの最適化が必ず元の動作を保証してるようなことを書いてるような人がいるから必ずしもそうではないよと http://mevius.5ch.net/test/read.cgi/tech/1745631298/386
387: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/19(木) 23:37:52.48 ID:oyTCj2/DM >>386 仕様に明確に書いてあることの動作は変わらない。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/387
388: デフォルトの名無しさん (ワッチョイ 1279-T1jw) [] 2025/06/20(金) 01:42:50.79 ID:iLwGFTtd0 >>382 そら結果は同じよ 結果が違っちゃまずいだろうよw 演算をやらない可能性があるってこと http://mevius.5ch.net/test/read.cgi/tech/1745631298/388
389: デフォルトの名無しさん (ワッチョイ 1279-T1jw) [] 2025/06/20(金) 01:44:00.77 ID:iLwGFTtd0 質問じゃ曖昧だけど副作用完了点が間にない場合の話なら、な http://mevius.5ch.net/test/read.cgi/tech/1745631298/389
390: デフォルトの名無しさん (ワッチョイ b603-dswa) [sage] 2025/06/20(金) 01:58:37.52 ID:t+D0H6HX0 >>388 どういうこと? 演算しないと結果は出ないのに、演算せずにどうやって結果だすの? http://mevius.5ch.net/test/read.cgi/tech/1745631298/390
391: デフォルトの名無しさん (ワッチョイ 5e10-cspE) [sage] 2025/06/20(金) 08:38:29.48 ID:eaqG1YUh0 実行するプログラムではなくてコンパイラが計算までしてしまう たとえば、printf("%d",12345/10*10); というコードはコンパイルすると、puts("12340"); に変更される可能性がある 出力結果だけは同じだけど、そのコードは大きく変更されてしまう http://mevius.5ch.net/test/read.cgi/tech/1745631298/391
392: デフォルトの名無しさん (ワッチョイ 0175-Is3k) [] 2025/06/20(金) 09:01:01.71 ID:BxPKXrVj0 >>390 変数が関わらない定数だけの演算なら、コンパイルの時点で計算しても結果同じだよね だから実行時ではなくコンパイルの時点で演算した結果を使う 初歩の最適化の一つ 元の式については左辺に変数が入ってくるから多分最適化はされない a=b/10*10みたいなのを想定してると思うけど、この場合は最終的に a=b/10 c=a*10と分解して計算されるので、どちらにも変数が関わってしまい最適化対象外だと思う a=b*(10/10)みたいな、計算優先度的に変数が関わらないところができれば最適化される この手の手動最適化なんて考えなくなって久しいから間違ってたらすまぬ http://mevius.5ch.net/test/read.cgi/tech/1745631298/392
393: デフォルトの名無しさん (ワッチョイ 71a6-Y+Ow) [sage] 2025/06/20(金) 09:03:31.40 ID:LoawS5uh0 変数があっても結果が同じ計算式で置き換えられるならそうしてくる 10倍よりも8倍+2倍のほうが速い、とかで http://mevius.5ch.net/test/read.cgi/tech/1745631298/393
394: デフォルトの名無しさん (ワッチョイ b1d6-xkro) [sage] 2025/06/20(金) 10:35:00.76 ID:YK1FsnCb0 最適化のロジックを作るのはまだプログラマーでしょうから。 値を10倍してから10で割るというプログラムを 何もしないに変更するのありかな。 でもわざと桁あふれをさせたい場合もある?! http://mevius.5ch.net/test/read.cgi/tech/1745631298/394
395: デフォルトの名無しさん (ワッチョイ 0175-Is3k) [] 2025/06/20(金) 10:40:47.81 ID:BxPKXrVj0 昔は最適化でバグ混入させられることもあって、最適化は切れってされてたなぁ、っていうおっちゃんのつぶやき http://mevius.5ch.net/test/read.cgi/tech/1745631298/395
396: デフォルトの名無しさん [sage] 2025/06/20(金) 10:45:39.27 ID:4xHX9xY70 >>392 ここまでの話で「定数だけの演算なら」と何で言い出すのか理解できないけど >>375では「整数型の変数を」と言っているわけだし まあそれはおいておいても「コンパイルの時点で計算しても」←演算してんじゃんって俺は思うわけ >>393 それ自体は問題なくね? 157 を 10で割って15 これに10を掛けるのでなく15*8+15+2 でも最適化の影響はないだろ? 割り算の方でそれが起きるなら問題だけど、>>378の人の話では起きないようだけど http://mevius.5ch.net/test/read.cgi/tech/1745631298/396
397: デフォルトの名無しさん (アウアウウー Sacd-xHx3) [sage] 2025/06/20(金) 11:14:53.80 ID:xCnXC/Iza >>396 これ観たら発狂するんじゃね https://qiita.com/HexagramNM/items/6ca6900b8df37a9b59b8 https://qiita.com/manjuu_eater/items/2e9e38eb001e4b90145b https://qiita.com/hiramax/items/add36c4fe38900f7175d http://mevius.5ch.net/test/read.cgi/tech/1745631298/397
398: デフォルトの名無しさん (ワッチョイ 0175-Is3k) [] 2025/06/20(金) 11:57:23.05 ID:BxPKXrVj0 >>396 コンパイラで演算しても結果が変わらない場合に限り、コンパイラで演算を行いその結果だけを使う 392でも書いてるが、例題の変数を10で割って10を掛ける動作は演算結果が変わってしまうので最適化は行わない http://mevius.5ch.net/test/read.cgi/tech/1745631298/398
399: デフォルトの名無しさん (ワッチョイ 9279-fyaG) [sage] 2025/06/20(金) 12:39:35.73 ID:4fYw50h40 定数はいつ計算しても同じ結果なんだから最適化されるよ http://mevius.5ch.net/test/read.cgi/tech/1745631298/399
400: デフォルトの名無しさん (ワッチョイ 59c9-LWzS) [] 2025/06/20(金) 12:50:40.34 ID:yZt3hnAQ0 -O3だとプログラムが動かなくなるから使っていいのは -O2までって先輩に言われてた http://mevius.5ch.net/test/read.cgi/tech/1745631298/400
401: デフォルトの名無しさん (ラクッペペ MM96-gPPd) [sage] 2025/06/20(金) 12:53:23.61 ID:y+CeF2upM 何故最適化レベルをワザワザ選べるようにしているのか? 完璧なら選ぶ必要はない 理想論には興味ないから語りたいなら具体的な問題点を上げていけ http://mevius.5ch.net/test/read.cgi/tech/1745631298/401
402: デフォルトの名無しさん (アウアウウー Sacd-xHx3) [] 2025/06/20(金) 13:06:46.75 ID:xCnXC/Iza >>400 それは言われてたのは知ってるが 「-O3だとプログラムが動かなくなる」のは未定義踏んでるからじゃないか http://mevius.5ch.net/test/read.cgi/tech/1745631298/402
403: デフォルトの名無しさん (ワッチョイ 6e9d-x4hs) [] 2025/06/20(金) 13:28:04.40 ID:H6JOW3Vp0 モバイルc消えてるんだけどなんで? http://mevius.5ch.net/test/read.cgi/tech/1745631298/403
404: デフォルトの名無しさん (ワッチョイ e908-x4hs) [] 2025/06/20(金) 13:42:00.01 ID:JPiEW2yh0 >>403 あれ便利やった なんで消されたんやろ http://mevius.5ch.net/test/read.cgi/tech/1745631298/404
405: デフォルトの名無しさん (JP 0H46-E6Ax) [] 2025/06/20(金) 17:27:19.07 ID:yQfQLmUOH std::formatの件だが、Visual Studio 2022のコンパイラ設定が デフォルトでC++14標準になってた。すまん。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/405
406: デフォルトの名無しさん [sage] 2025/06/20(金) 18:21:03.44 ID:4xHX9xY70 >>398 そんなことは知ってるのさ 「実行ごとに演算結果が変わる(可能性がある)」から最適化されない、と言うのは良いんだけど 最初からその前提の話をしていたはずなのに「演算をやらない可能性がある」と言い出しただろ? 375 整数型の変数を〜(略)〜この計算が最適化とかで除かれない保証ってあるの 381 それだと取り除けるケースがあるので保証はされない 382 いや、そんなことない。最適化では結果は変わらない事が保証される。 388 (略)〜演算をやらない可能性があるってこと この流れじゃ『整数型の変数(実行時に結果が変わる)の場合でも最適化によって「演算をやらない可能性がある」』ってニュアンスになっているって気づかんの? それに対してのどういう状況だ?という>>390だよ まあ言いたいことは分かったから別にいいけどさ http://mevius.5ch.net/test/read.cgi/tech/1745631298/406
407: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sate] 2025/06/20(金) 19:12:09.11 ID:ykKOKnwYM >>406 回答者にも正しいことを言っている人と間違っていることを言っている人が いるというだけ。 正しいのは、仕様に明示されている動作については、 最適化してもしなくても結果が変わらないという事だ。 なぜなら、それが仕様なのだから。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/407
408: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-iKku) [sage] 2025/06/20(金) 19:41:18.21 ID:3ZuChe0s0 >>407 大元の質問からすると仕様が動作を保証するか結果を保証するかをわかってないようだからその説明では不十分でしょ。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/408
409: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/20(金) 20:44:54.01 ID:ykKOKnwYM 保証されます。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/409
410: デフォルトの名無しさん (ワッチョイ b235-m2eM) [] 2025/06/20(金) 21:00:28.00 ID:M1o0ztly0 コンパイル時に値が決まるようなら実行時に演算されない そうでない場合でもある整数が決まった値になることが保証されていることがコンパイル時に分かっているなら最適化されて演算されないケースがある それ以外なら最適化されない http://mevius.5ch.net/test/read.cgi/tech/1745631298/410
411: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/20(金) 21:06:32.84 ID:80Iion+LM いずれにせよ結果を使わないなら最適化で丸々消される http://mevius.5ch.net/test/read.cgi/tech/1745631298/411
412: デフォルトの名無しさん (ワッチョイ 0175-Is3k) [] 2025/06/20(金) 21:12:56.63 ID:BxPKXrVj0 >>409 ただしバグがなければ http://mevius.5ch.net/test/read.cgi/tech/1745631298/412
413: デフォルトの名無しさん (オイコラミネオ MMdd-15C+) [sage] 2025/06/20(金) 21:18:29.51 ID:80Iion+LM 最適化の時点でコードが消されるので直に0で除算をするとコンパイルエラー 変数に突っ込んでるとコンパイル可能で実行してもその部分は最適化され消されてるのでゼロ除算にならない もちろんconstにしててもコンパイルエラー http://mevius.5ch.net/test/read.cgi/tech/1745631298/413
414: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/20(金) 21:43:49.77 ID:ykKOKnwYM >>412 それは、ユーザープログラムのバグではなく、コンパイラのバグだ。 コンパイラにバグが無ければ、四則演算や&,|,~,^,&&,||などと 括弧の組み合わせた結果は、最適化しても変わらない。 0除算に関しては話が別。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/414
415: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/20(金) 21:48:47.56 ID:ykKOKnwYM 最適化されて変わる可能性があるのは、今思い出せるのは、 ・初期化してない変数の中身 ・変数のアドレス ・結果を利用せず、副作用も伴わない式の存在。 整数に対する四則演算を含めた「計算」は、仕様が決められているので、 同じコンパイラと同じターゲット(OS、環境)だと最適化しても 結果は変わらない。 浮動小数点に対する計算は誤差の範囲で結果が変化する可能性はある。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/415
416: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/20(金) 22:25:10.37 ID:ykKOKnwYM >>415 1. 整数の計算途中に「桁あふれ」が起きる場合はこの限りではないかも知れない。 例えば、整数型 a に対して、a * 100 / 5 は、a * 20 と最適化できる 可能性がある。しかし a がとても大きい場合には結果は同じにはならない可能性がある。このことに 関して仕様がどうなっているかは知らない。 2. 浮動小数点型の変数 a に対して、(a * 100.0) / 5.0 は、 a * 20.0 と最適化できる可能性があるが、浮動小数点型には計算誤差があるので、 誤差の範囲内で異なる結果になる可能性があるかもしれない。 これに対して仕様上、最適化していいかどうか走らない。 3. しかし、整数型 http://mevius.5ch.net/test/read.cgi/tech/1745631298/416
417: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [] 2025/06/20(金) 22:25:52.67 ID:ykKOKnwYM >>416 3. しかし、整数型変数 a に対して、(a / 100) * 100 は、 明らかに http://mevius.5ch.net/test/read.cgi/tech/1745631298/417
418: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/20(金) 22:26:34.77 ID:ykKOKnwYM >>416 3. しかし、整数型変数 a に対して、(a / 100) * 100 は、 明らかに a とは、結果が異なる。だから a と最適化される事は無い。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/418
419: デフォルトの名無しさん (ワッチョイ 1279-T1jw) [] 2025/06/21(土) 01:51:51.86 ID:bIqfBqmB0 キミは色々と勘違いをしているからこの手の話をしたいならもうちょい勉強しよう aが何だろうがa*100/5をa*20とはそもそも出来ないし、2.も同様 3.もaの値によっては演算の前後で値がおなじケースがある 色々あるのでいちいち書かなかったが、例えばaが10の倍数の時、aの絶対値が9以下の時、またaが列挙型だったり配列の添字だったりする時は挙動が推測出来るケースも出てくる 他にも最適化で実行時の演算をしなくてすむケースがある 演算をしなくてもaの値を変えることは出来うるし、その場合除算の代わりにいくつかの分岐や直値に変わるだろう http://mevius.5ch.net/test/read.cgi/tech/1745631298/419
420: デフォルトの名無しさん (JP 0H46-E6Ax) [] 2025/06/21(土) 02:46:24.26 ID:myS4seE9H また空気読めない書き込みする。ずっと議論 が続いているけど興味ない。 そもそも実数データを表現するbit数が有限 なんだけど(doubleで8byte=64bit)、そりゃあ 場合によっては結果が違うが、実数の場合は それほど問題じゃない。誤差の範囲内。 整数演算の方が問題。 i=32767/10000*10000の演算やったらどう なるか?これはコンパイラの最適化の問題 じゃなくてプログラムする人が気をつける べきことだと思う。というか、変な最適化 はしない方がいいと思う。最適化しなくても 現在のコンピュータ能力じゃあ大して時間差 は問題にならん。 それよりも行列演算でNRVOを実装してほしい。 gccの一部では実装されているみたいだけど。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/420
421: デフォルトの名無しさん (JP 0H46-E6Ax) [] 2025/06/21(土) 02:49:22.52 ID:myS4seE9H あ、言い忘れた。演算子のオーバーロードでの話ね。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/421
422: デフォルトの名無しさん (ワッチョイ 01de-Ni2x) [sage] 2025/06/21(土) 06:20:55.55 ID:mM+iEPSf0 >>413 0除算は未定義動作だから、(0除算については)最適化されてエラーが出なくてもC++規格通りかね。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/422
423: デフォルトの名無しさん (JP 0H46-E6Ax) [] 2025/06/21(土) 08:07:57.88 ID:myS4seE9H 浮動小数点演算で問題になるのは情報落ち(桁落ち)。 expを指数関数としてexp(x)+exp(-x)でxの絶対値が 大きくなるとどうなるか?4倍精度演算が標準として ほしい。fortranには昔からある。たしか南米の人が C++で4倍精度演算ライブラリ作ってた気がする。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/423
424: デフォルトの名無しさん (JP 0H46-E6Ax) [] 2025/06/21(土) 08:14:50.36 ID:myS4seE9H ところで、前から気になってたけど何でワイだけ ワッチョイ出ないんだろ。メール設定ミス?それとも プロバイダの問題?目立つから困る。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/424
425: デフォルトの名無しさん (ワッチョイ 71a6-Y+Ow) [sage] 2025/06/21(土) 09:45:45.70 ID:cFB8HkI30 signedのオーバーフローは未定義だがunsignedのオーバーフローは定義されてる あとC/C++はfenvで浮動小数点コプロセッサのモードを切り替えられるから、それを使うつもりのコードはコンパイル時に計算されると狂ったりはする http://mevius.5ch.net/test/read.cgi/tech/1745631298/425
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 343 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.011s