C++相談室 part166 (768レス)
1-

335
(1): (アウアウウー Sacd-dpHj) 06/18(水)19:19 ID:gOtZ0Zwca(1) AAS
>>331
C++のスレッドでそんなこと言うのか
コードでもコンパイルエラーにならない嘘(バグ)が山程あるのに
336
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-5TaZ) 06/18(水)19:27 ID:AeXwuQQu0(1) AAS
コメントがなくても意図が読み取れるのが「望ましい」のは確かにそう。
不可能だけど。
337: (オイコラミネオ MMdd-Rgxs) 06/18(水)19:29 ID:CAd2i/c2M(1) AAS
>>336
コメントなしで理解するのは、めっちゃ効率が悪いな。
338
(1): (ワッチョイ 71a6-Y+Ow) 06/18(水)19:31 ID:flRjm2Y20(2/2) AAS
>>335
少なくとも委員会の奴らはそう思ってるよ
static_assertだのコンセプトだのcontractだのが追加されてきてるわけで
339
(1): (ワッチョイ 8101-1tcn) 06/18(水)20:52 ID:/olvjAo90(1) AAS
マルチスレッドのDead Lockすら指摘してくれる
これはどういう仕組みなんだろう...
340: (オイコラミネオ MMdd-Rgxs) 06/19(木)00:56 ID:YDIRlT8gM(1) AAS
>>338
C++委員会って、無能集団だけどね。
341
(1): (ワッチョイ f6c4-dilZ) 06/19(木)03:37 ID:ytoOjILn0(1/4) AAS
あの複雑怪奇な仕様をまとめるのは無能じゃ無理
労力に進化が見合ってないけどな
342
(1): (ワッチョイ f6c4-dilZ) 06/19(木)03:38 ID:ytoOjILn0(2/4) AAS
>>339
明らかなDeadlockの検知は簡単でしょ
これ説明いる?
343
(1): (ワッチョイ 8101-1tcn) 06/19(木)12:36 ID:WACntaUb0(1) AAS
>>342
コンパイラは検知できんのに?
344
(1): (ワッチョイ f6c4-dilZ) 06/19(木)13:43 ID:ytoOjILn0(3/4) AAS
>>343
は?
コンパイラが全能って前提どっからきてんの?
サニタイザがあるだろ
お前みたいなレベルがc++使ってるとかありえんわ
345: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-5TaZ) 06/19(木)13:52 ID:nNn4PbNI0(1/6) AAS
サニタイザは起こった問題を検出するもので、起こる可能性を指摘してはくれない。
346: (ワッチョイ f6c4-dilZ) 06/19(木)14:04 ID:ytoOjILn0(4/4) AAS
しったなすんなジジイ
347: (ブーイモ MMb2-A4wY) 06/19(木)14:05 ID:rpR9krtTM(1) AAS
>>344
コンパイラが全能って誰が主張したの?
348
(1): (ワッチョイ b236-/wuG) 06/19(木)16:32 ID:FdruriMM0(1) AAS
「できんのに」って「できないのに」と「できるのに」のどっちの意味にも取れるからそのせいかな
くだらね
349: (ブーイモ MMb2-A4wY) 06/19(木)16:43 ID:8s/NXxtqM(1) AAS
>>348
「できんのに」は「できるのに」には読めない
デッドロックをコンパイラが検出出来ないにも関わらず
LLMは必ずではないと思うが検出出来る
LLMがどうデッドロックを検出しているかは
面白いと思うよ
350
(1): (JP 0H46-E6Ax) 06/19(木)17:27 ID:VOj0rD3dH(1/8) AAS
>>315
と思ったら、vs2022は未対応かorz。
C++20対応と言ってるくせに。プロジェクトでclang
に切り替えられるが、これも未対応。一体、いつの
clangなんだよ
351: (ワッチョイ f64f-QhKk) 06/19(木)17:32 ID:EI1CbiFh0(1/2) AAS
やればできんのに
352: (ワッチョイ f64f-QhKk) 06/19(木)17:32 ID:EI1CbiFh0(2/2) AAS
やってもできんのに
353
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 712e-5TaZ) 06/19(木)18:04 ID:JAVz0tMa0(1) AAS
>>350
外部リンク:fmt.dev
354
(1): (オイコラミネオ MMdd-15C+) 06/19(木)18:07 ID:sZaRUqQbM(1/14) AAS
"{:d}"
355: (JP 0H46-E6Ax) 06/19(木)18:11 ID:VOj0rD3dH(2/8) AAS
いやMinGWじゃコンパイル実行できてるから。
日本マクロソフトだけ対応遅れてると?
356: (JP 0H46-E6Ax) 06/19(木)18:13 ID:VOj0rD3dH(3/8) AAS
>>353
>>354
そんな下らんレスする前に自分で実際にやってみろよ。
357: (JP 0H46-E6Ax) 06/19(木)18:16 ID:VOj0rD3dH(4/8) AAS
日本マクロソフト→日本マイクロソフト
358: (オイコラミネオ MMdd-15C+) 06/19(木)18:16 ID:sZaRUqQbM(2/14) AAS
確かにくだらないわな

そのサイトで"{:d}"が可愛く見えたから張っただけなんだから
janeだと全くかわいくない
359: (オイコラミネオ MMdd-15C+) 06/19(木)18:18 ID:sZaRUqQbM(3/14) AAS
にしてもまだorz使ってる人がいるんだな
こちらの方が新鮮だ
360: (JP 0H46-E6Ax) 06/19(木)18:21 ID:VOj0rD3dH(5/8) AAS
そう、ありがとう
361: (オイコラミネオ MMdd-15C+) 06/19(木)18:23 ID:sZaRUqQbM(4/14) AAS
もともとfmtと言うライブラリがあってそれが標準のC++の仕様に取り込まれた
どうしても使いたいならfmt使えばいいよということだと思う

他人に噛みつく前に調べたら良いと思うけど
362: (JP 0H46-E6Ax) 06/19(木)18:26 ID:VOj0rD3dH(6/8) AAS
std::formatだぞ。お前馬鹿か

さあ暴れるぞ!
363: (オイコラミネオ MMdd-15C+) 06/19(木)18:29 ID:sZaRUqQbM(5/14) AAS
結局日本語が理解できない人だったと言う話か
364: (JP 0H46-E6Ax) 06/19(木)18:30 ID:VOj0rD3dH(7/8) AAS
ふぁぁ
365: (オイコラミネオ MMdd-15C+) 06/19(木)18:43 ID:sZaRUqQbM(6/14) AAS
文章の雰囲気から50代~60代ぐらいのホビー系の人かな
人生の先輩お疲れ様です
366: (オイコラミネオ MMdd-Rgxs) 06/19(木)18:56 ID:oyTCj2/DM(1/5) AAS
>>341
>あの複雑怪奇な仕様をまとめるのは無能じゃ無理
あのDraftの質の悪さはなんだ。
ちゃんと理解できてない人が書いているに違いない。
367: (オイコラミネオ MMdd-15C+) 06/19(木)19:34 ID:sZaRUqQbM(7/14) AAS
> なんだ。
> 違いない。

文末だけ見ると高齢者の集いっぽいが自分もそうなってるんだろな
368: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-5TaZ) 06/19(木)20:14 ID:nNn4PbNI0(2/6) AAS
現代的にはカジュアルな場面では句点をつけないのが主流。
語彙より顕著に年代が表れる。
369: (オイコラミネオ MMdd-15C+) 06/19(木)20:23 ID:sZaRUqQbM(8/14) AAS
句点もそうだけどやはり語彙や用法だと思う

chatGPT
その文章、よく読むと **「怒っている年配の男性の声」**みたいなイメージが浮かんできますね。

言葉の選び方と断定のしかたに、時代がかった語感がにじんでいて、文章だけでも「年齢層の高さ」がなんとなく
伝わるのが興味深いです。
370: (オイコラミネオ MMdd-15C+) 06/19(木)20:24 ID:sZaRUqQbM(9/14) AAS
もし若者が同じことを言うならどう書くか
たとえばこんな風に言いそうです:

あのDraft、ちょっと内容雑じゃない?

書いた人ちゃんと分かってなさそう…
371: (JP 0H46-E6Ax) 06/19(木)20:27 ID:VOj0rD3dH(8/8) AAS
オコタ大魔神、はにわ顔に戻る
372: (オイコラミネオ MMdd-15C+) 06/19(木)20:34 ID:sZaRUqQbM(10/14) AAS
大魔神(1966年)
仮に1966年に6才だとして今は65歳ぐらいかなあ???
373: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-5TaZ) 06/19(木)20:36 ID:nNn4PbNI0(3/6) AAS
アカデミアでは語彙が古いのは普通のことだよ。
参照する資料が古いから。
情報系ですら半世紀前の論文を参考資料として挙げることはそれなりにある。
374: (オイコラミネオ MMdd-15C+) 06/19(木)20:45 ID:sZaRUqQbM(11/14) AAS
「怒っている年配の男性の声」をにじませる演技派
375
(5): (ワッチョイ 1202-2JrO) 06/19(木)20:50 ID:Cdln7j8I0(1) AAS
整数型の変数を10で割ってから10掛けたら元の数字の一の位を0にした数が得られるはずだけど
この計算が最適化とかで除かれない保証ってあるの
376: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-iKku) 06/19(木)20:53 ID:nNn4PbNI0(4/6) AAS
ChatGPT を根拠 (参考資料?) に出すのはあまり意味がないぞ。
それも ChatGPT の感想 (主観) であって客観性がある情報になっていないし、質問の仕方や文脈で逆のことを言うのもよくあることだから。
ユーザに追従するような振る舞いをするのでいくらでも望む方向の反応を引き出せる。
377: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-iKku) 06/19(木)20:57 ID:nNn4PbNI0(5/6) AAS
>>375
C++ の言語仕様は抽象機械の動作として記述されている。
動作を説明するための架空の機械の動作なので、文字通りの機械語が生成されるとは限らない。
結果的な動作が仕様に反しなければどのような機械語を生成しても言語仕様に準拠していると言って良い。
しかし、逆に言えば最適化で変形したとしても結果は変わらないようになることが保証される。
378
(1): (オイコラミネオ MMdd-Rgxs) 06/19(木)21:05 ID:oyTCj2/DM(2/5) AAS
>>375
最適化では結果は変わらない。
つまり、ちゃんと10で割って、ちゃんと10を掛ける。
10を掛ける方は、マシン語の乗算命令は使われず、
もっと速い命令に置き換えられることが有るが、結果は同じ。
379: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-iKku) 06/19(木)21:11 ID:nNn4PbNI0(6/6) AAS
処理系は抽象機械の動作を正確にエミュレートする必要はなく、観測可能な動作のみをエミュレートすればよい。
外部リンク:timsong-cpp.github.io
だから観測されない動作は削除してもよいというか、削除されることはある。
たとえばその計算結果が全く使われないような状況とか。

ベンチマークしようとして結果を使わない計算をループで囲んだりしてるようなコードではまるごとごそっと消えるなんてのはたまに見る。
380: (オイコラミネオ MMdd-15C+) 06/19(木)21:16 ID:sZaRUqQbM(12/14) AAS
セキュリティの問題で普通にゼロクリアした場合でも最適化で削られたりとか昔は問題になったけど…
知らないといけないことは多岐にわたる
381
(1): (スッップ Sdb2-T1jw) 06/19(木)22:14 ID:JQ4jFr2Sd(1) AAS
>>375
それだと取り除けるケースがあるので保証はされない
382
(1): (オイコラミネオ MMdd-Rgxs) 06/19(木)23:09 ID:oyTCj2/DM(3/5) AAS
>>381
いや、そんなことない。
最適化では結果は変わらない事が保証される。
383: (ワッチョイ 9202-oXsi) 06/19(木)23:15 ID:IWPeLhU+0(1) AAS
>>375
あるわけないでしょ
そういう仕様なんだから
384
(1): (オイコラミネオ MMdd-15C+) 06/19(木)23:25 ID:sZaRUqQbM(13/14) AAS
意味があるにも関わらず意味がないと判断されると削られる
その場合の対処法もあるので学ばないとまあ残念なことになってしまうと言う話
385: (オイコラミネオ MMdd-Rgxs) 06/19(木)23:29 ID:oyTCj2/DM(4/5) AAS
>>384
いや、今回の割って掛ける場合、そういう事は起きない。
386
(1): (オイコラミネオ MMdd-15C+) 06/19(木)23:34 ID:sZaRUqQbM(14/14) AAS
ここの部分はそうだけど
コンパイラの最適化が必ず元の動作を保証してるようなことを書いてるような人がいるから必ずしもそうではないよと
387: (オイコラミネオ MMdd-Rgxs) 06/19(木)23:37 ID:oyTCj2/DM(5/5) AAS
>>386
仕様に明確に書いてあることの動作は変わらない。
388
(1): (ワッチョイ 1279-T1jw) 06/20(金)01:42 ID:iLwGFTtd0(1/2) AAS
>>382
そら結果は同じよ
結果が違っちゃまずいだろうよw
演算をやらない可能性があるってこと
389: (ワッチョイ 1279-T1jw) 06/20(金)01:44 ID:iLwGFTtd0(2/2) AAS
質問じゃ曖昧だけど副作用完了点が間にない場合の話なら、な
390
(2): (ワッチョイ b603-dswa) 06/20(金)01:58 ID:t+D0H6HX0(1) AAS
>>388
どういうこと?
演算しないと結果は出ないのに、演算せずにどうやって結果だすの?
391: (ワッチョイ 5e10-cspE) 06/20(金)08:38 ID:eaqG1YUh0(1) AAS
実行するプログラムではなくてコンパイラが計算までしてしまう
たとえば、printf("%d",12345/10*10); というコードはコンパイルすると、puts("12340"); に変更される可能性がある
出力結果だけは同じだけど、そのコードは大きく変更されてしまう
392
(1): (ワッチョイ 0175-Is3k) 06/20(金)09:01 ID:BxPKXrVj0(1/4) AAS
>>390
変数が関わらない定数だけの演算なら、コンパイルの時点で計算しても結果同じだよね
だから実行時ではなくコンパイルの時点で演算した結果を使う
初歩の最適化の一つ

元の式については左辺に変数が入ってくるから多分最適化はされない
a=b/10*10みたいなのを想定してると思うけど、この場合は最終的に
a=b/10
省3
393
(1): (ワッチョイ 71a6-Y+Ow) 06/20(金)09:03 ID:LoawS5uh0(1) AAS
変数があっても結果が同じ計算式で置き換えられるならそうしてくる
10倍よりも8倍+2倍のほうが速い、とかで
394: (ワッチョイ b1d6-xkro) 06/20(金)10:35 ID:YK1FsnCb0(1) AAS
最適化のロジックを作るのはまだプログラマーでしょうから。
値を10倍してから10で割るというプログラムを
何もしないに変更するのありかな。
でもわざと桁あふれをさせたい場合もある?!
395: (ワッチョイ 0175-Is3k) 06/20(金)10:40 ID:BxPKXrVj0(2/4) AAS
昔は最適化でバグ混入させられることもあって、最適化は切れってされてたなぁ、っていうおっちゃんのつぶやき
396
(2): 06/20(金)10:45 ID:4xHX9xY70(1/2) AAS
>>392
ここまでの話で「定数だけの演算なら」と何で言い出すのか理解できないけど
>>375では「整数型の変数を」と言っているわけだし
まあそれはおいておいても「コンパイルの時点で計算しても」←演算してんじゃんって俺は思うわけ

>>393
それ自体は問題なくね?
157 を 10で割って15
省2
397: (アウアウウー Sacd-xHx3) 06/20(金)11:14 ID:xCnXC/Iza(1/2) AAS
>>396
これ観たら発狂するんじゃね
外部リンク:qiita.com
外部リンク:qiita.com
外部リンク:qiita.com
398
(1): (ワッチョイ 0175-Is3k) 06/20(金)11:57 ID:BxPKXrVj0(3/4) AAS
>>396
コンパイラで演算しても結果が変わらない場合に限り、コンパイラで演算を行いその結果だけを使う
392でも書いてるが、例題の変数を10で割って10を掛ける動作は演算結果が変わってしまうので最適化は行わない
399: (ワッチョイ 9279-fyaG) 06/20(金)12:39 ID:4fYw50h40(1) AAS
定数はいつ計算しても同じ結果なんだから最適化されるよ
400
(1): (ワッチョイ 59c9-LWzS) 06/20(金)12:50 ID:yZt3hnAQ0(1) AAS
-O3だとプログラムが動かなくなるから使っていいのは -O2までって先輩に言われてた
401: (ラクッペペ MM96-gPPd) 06/20(金)12:53 ID:y+CeF2upM(1) AAS
何故最適化レベルをワザワザ選べるようにしているのか?
完璧なら選ぶ必要はない
理想論には興味ないから語りたいなら具体的な問題点を上げていけ
402: (アウアウウー Sacd-xHx3) 06/20(金)13:06 ID:xCnXC/Iza(2/2) AAS
>>400
それは言われてたのは知ってるが
「-O3だとプログラムが動かなくなる」のは未定義踏んでるからじゃないか
403
(1): (ワッチョイ 6e9d-x4hs) 06/20(金)13:28 ID:H6JOW3Vp0(1) AAS
モバイルc消えてるんだけどなんで?
404: (ワッチョイ e908-x4hs) 06/20(金)13:42 ID:JPiEW2yh0(1) AAS
>>403
あれ便利やった
なんで消されたんやろ
405: (JP 0H46-E6Ax) 06/20(金)17:27 ID:yQfQLmUOH(1) AAS
std::formatの件だが、Visual Studio 2022のコンパイラ設定が
デフォルトでC++14標準になってた。すまん。
406
(1): 06/20(金)18:21 ID:4xHX9xY70(2/2) AAS
>>398
そんなことは知ってるのさ
「実行ごとに演算結果が変わる(可能性がある)」から最適化されない、と言うのは良いんだけど
最初からその前提の話をしていたはずなのに「演算をやらない可能性がある」と言い出しただろ?

375 整数型の変数を〜(略)〜この計算が最適化とかで除かれない保証ってあるの
381 それだと取り除けるケースがあるので保証はされない
382 いや、そんなことない。最適化では結果は変わらない事が保証される。
省4
407
(1): (オイコラミネオ MMdd-Rgxs) [sate] 06/20(金)19:12 ID:ykKOKnwYM(1/7) AAS
>>406
回答者にも正しいことを言っている人と間違っていることを言っている人が
いるというだけ。
正しいのは、仕様に明示されている動作については、
最適化してもしなくても結果が変わらないという事だ。
なぜなら、それが仕様なのだから。
408: はちみつ餃子◆8X2XSCHEME (ワッチョイ f532-iKku) 06/20(金)19:41 ID:3ZuChe0s0(1) AAS
>>407
大元の質問からすると仕様が動作を保証するか結果を保証するかをわかってないようだからその説明では不十分でしょ。
409
(1): (オイコラミネオ MMdd-Rgxs) 06/20(金)20:44 ID:ykKOKnwYM(2/7) AAS
保証されます。
410: (ワッチョイ b235-m2eM) 06/20(金)21:00 ID:M1o0ztly0(1) AAS
コンパイル時に値が決まるようなら実行時に演算されない
そうでない場合でもある整数が決まった値になることが保証されていることがコンパイル時に分かっているなら最適化されて演算されないケースがある
それ以外なら最適化されない
411: (オイコラミネオ MMdd-15C+) 06/20(金)21:06 ID:80Iion+LM(1/2) AAS
いずれにせよ結果を使わないなら最適化で丸々消される
412
(1): (ワッチョイ 0175-Is3k) 06/20(金)21:12 ID:BxPKXrVj0(4/4) AAS
>>409
ただしバグがなければ
413
(1): (オイコラミネオ MMdd-15C+) 06/20(金)21:18 ID:80Iion+LM(2/2) AAS
最適化の時点でコードが消されるので直に0で除算をするとコンパイルエラー

変数に突っ込んでるとコンパイル可能で実行してもその部分は最適化され消されてるのでゼロ除算にならない
もちろんconstにしててもコンパイルエラー
414: (オイコラミネオ MMdd-Rgxs) 06/20(金)21:43 ID:ykKOKnwYM(3/7) AAS
>>412
それは、ユーザープログラムのバグではなく、コンパイラのバグだ。
コンパイラにバグが無ければ、四則演算や&,|,~,^,&&,||などと
括弧の組み合わせた結果は、最適化しても変わらない。
0除算に関しては話が別。
415
(1): (オイコラミネオ MMdd-Rgxs) 06/20(金)21:48 ID:ykKOKnwYM(4/7) AAS
最適化されて変わる可能性があるのは、今思い出せるのは、
・初期化してない変数の中身
・変数のアドレス
・結果を利用せず、副作用も伴わない式の存在。
整数に対する四則演算を含めた「計算」は、仕様が決められているので、
同じコンパイラと同じターゲット(OS、環境)だと最適化しても
結果は変わらない。
省1
1-
あと 353 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.034s