!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.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言語なら俺に聞け 162
https://mevius.5ch.net/test/read.cgi/tech/1698653580/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 163
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7bba-Lem2)
2024/07/16(火) 22:43:54.18ID:ZrsCjURC0577デフォルトの名無しさん (ワッチョイ a75f-7ROj)
2025/01/30(木) 09:29:28.34ID:x87hbq3s0 コンパイラひバグが無いかぎりは高級言語のソース通りに動くから大丈夫だぞ
昔のファミコン並みに処理ステップ数に要するクロックを数えてラインスクロールさせるとかでもしない限りタイミングも気にする必要無いし
昔のファミコン並みに処理ステップ数に要するクロックを数えてラインスクロールさせるとかでもしない限りタイミングも気にする必要無いし
578デフォルトの名無しさん (ワッチョイ fa07-cjCd)
2025/01/30(木) 11:48:21.95ID:1fx7BZxf0 むしろマルチコアの問題のほうがでかい 自分も、高効率に書ける自信がない
579デフォルトの名無しさん (ワッチョイ 0e00-BqhG)
2025/01/30(木) 12:22:11.10ID:K2FsQpfY0 C言語に限らずJavaでもPythonでもLispでも最終的にはブランチしまくりヒープアクセスしまくりなマシン語で動いてるんだから心配しても意味ない。
たまたまC言語はマシン語に近い距離にある言語なのでマシン語「でも」デバッグできてしまうだけの話。
たまたまC言語はマシン語に近い距離にある言語なのでマシン語「でも」デバッグできてしまうだけの話。
580デフォルトの名無しさん (ワッチョイ 0e76-Vgbt)
2025/01/30(木) 16:25:32.68ID:dOgLqtqk0 コンパイラ最適化の時点で追うのが難しい
ましてや投機実行とくると…
ましてや投機実行とくると…
581デフォルトの名無しさん (ワッチョイ 0e76-Vgbt)
2025/01/30(木) 16:27:29.00ID:dOgLqtqk0 思い出した continue や break は優遇されている印象
582デフォルトの名無しさん
2025/01/31(金) 01:34:44.08ID:5fFn3R6V0 Pythonだって安全じゃないしな
俺この間自作したPythonプログラム動かしたら数秒後PCが落ちた
XPとかWindows7とかじゃないぜ、Windows11の最新が突如電源が切れたんだよプツンて
まじでビビった
ちなみに原因は日本語フォントを読み込むコードをカメラキャプチャのループ内(数十から数百ミリ秒ぐらい?)で実行していた
C言語のポインタは危険とか言うけどさ、一番危険なのは俺みたいな馬鹿なコード書く奴の存在だよ
俺この間自作したPythonプログラム動かしたら数秒後PCが落ちた
XPとかWindows7とかじゃないぜ、Windows11の最新が突如電源が切れたんだよプツンて
まじでビビった
ちなみに原因は日本語フォントを読み込むコードをカメラキャプチャのループ内(数十から数百ミリ秒ぐらい?)で実行していた
C言語のポインタは危険とか言うけどさ、一番危険なのは俺みたいな馬鹿なコード書く奴の存在だよ
583デフォルトの名無しさん (ワッチョイ 4e63-W7nG)
2025/01/31(金) 09:59:26.90ID:4ClqIqkw0 君のPCが落ちる程度は許容範囲
584デフォルトの名無しさん (ワッチョイ fa07-cjCd)
2025/01/31(金) 11:00:00.59ID:uHjOTXCx0 考えようによっては、タチの悪いDoSじゃないかw
カメラごときで全体落としてんじゃねえよ > カーネル層
ロジックバグなんだろうけど、こういうのはしかし難しいね
カメラごときで全体落としてんじゃねえよ > カーネル層
ロジックバグなんだろうけど、こういうのはしかし難しいね
585デフォルトの名無しさん (ササクッテロラ Sp3b-7ROj)
2025/01/31(金) 11:20:36.48ID:h9+hJoTPp ドライバの秘孔を突いただけだから
586デフォルトの名無しさん (ワッチョイ 4e63-W7nG)
2025/01/31(金) 11:30:08.08ID:4ClqIqkw0 ドライバーに致命的不具合があったとしても
ブルスクになる程度で
電源断まで行くと言うのは考え難い
ブルスクになる程度で
電源断まで行くと言うのは考え難い
587デフォルトの名無しさん (ササクッテロラ Sp3b-7ROj)
2025/01/31(金) 11:49:46.06ID:h9+hJoTPp ドライバの秘孔を突いてカメラに搭載のチップが電源ライン直結になったとかじゃね?
588デフォルトの名無しさん
2025/01/31(金) 18:44:56.94ID:5fFn3R6V0 原因はそっち(ドライバ)ではなくスリープなしのループ内でフォントファイルに連続攻撃したことだぜ、たぶん
簡単に書くとこんな感じ
fontpath ='C:\\Windows\\Fonts\\DFJGOTEB.TTC'
while True:
put_ja(point, text)
def put_ja(point, text):
font = ImageFont.truetype(fontpath, 32)
draw.text(point, text, fill=color, font=font)
実際にはwhileじゃなくてafterでループさせてたけど
日本語出力の時、出力のたびにフォントファイル読み込んでたようで結果PCが落ちた
残像攻撃を受けた感じだったのかもしれん、コロ先生の分身みたいなやつ
簡単に書くとこんな感じ
fontpath ='C:\\Windows\\Fonts\\DFJGOTEB.TTC'
while True:
put_ja(point, text)
def put_ja(point, text):
font = ImageFont.truetype(fontpath, 32)
draw.text(point, text, fill=color, font=font)
実際にはwhileじゃなくてafterでループさせてたけど
日本語出力の時、出力のたびにフォントファイル読み込んでたようで結果PCが落ちた
残像攻撃を受けた感じだったのかもしれん、コロ先生の分身みたいなやつ
589デフォルトの名無しさん (ワッチョイ 0e00-BqhG)
2025/01/31(金) 19:36:45.83ID:R7Zj8Mog0 プリエンプティブカーネル使っててスリープなしのループごときでそんなことあり得るのか?
逆にそうなった仕組みが知りたい。
逆にそうなった仕組みが知りたい。
590デフォルトの名無しさん (ワッチョイ 9a79-x7zn)
2025/01/31(金) 19:40:58.83ID:1pwkweKb0 インテルのTurboBoostだかで負荷もブーストされて排熱が間に合わずMBにダメージ与えつつ逝ったんじゃないの
PC買い換えた方がいいよ
PC買い換えた方がいいよ
591デフォルトの名無しさん (ワッチョイ b6fc-jays)
2025/01/31(金) 19:54:38.13ID:R/wyJ37S0 ブルースクリーンもなしにおちるなんてハード不良
592デフォルトの名無しさん
2025/01/31(金) 20:00:56.86ID:5fFn3R6V0 スレチで申し訳ないが、
俺も気にはなってるけどPC痛めつけてまでやる気にはなれない
試したいなら試してくれ、ただしどうなっても責任は負わんぞw
MicrosoftストアのPython Software Foundationってとこの奴
Python 3.13.1 (tags/v3.13.1:0671451, Dec 3 2024, 19:06:28) [MSC v.1942 64 bit (AMD64)] on win32
OpenCVで日本語表示
https://monomonotech.jp/kurage/raspberrypi/opencv_japanese.html
ここのputText_japaneseを参考にした(パスとかwindows用に書き換え)
んで、それを
【簡単】QRコードの作成と読み取り in Python
https://qiita.com/PoodleMaster/items/0afbce4be7e442e75be6
のcv2.putTextと置き換えるように書き換えたんよ
引数のfontはなくしてフォントサイズだけを渡す
ImageFont.truetypeがフォントサイズも引数にしているから、こうすれば動的なフォントサイズ変更にも対応できるな、ヨシ!って思ってね
それ実行したらPC落ちた
それでも数回やって問題なかった記憶はあるんだけどね(ただし数十秒程度の起動時間だった)
ちょっと長めに起動させたままにしたからリソース食いつぶしたのかな?と思ってる
俺も気にはなってるけどPC痛めつけてまでやる気にはなれない
試したいなら試してくれ、ただしどうなっても責任は負わんぞw
MicrosoftストアのPython Software Foundationってとこの奴
Python 3.13.1 (tags/v3.13.1:0671451, Dec 3 2024, 19:06:28) [MSC v.1942 64 bit (AMD64)] on win32
OpenCVで日本語表示
https://monomonotech.jp/kurage/raspberrypi/opencv_japanese.html
ここのputText_japaneseを参考にした(パスとかwindows用に書き換え)
んで、それを
【簡単】QRコードの作成と読み取り in Python
https://qiita.com/PoodleMaster/items/0afbce4be7e442e75be6
のcv2.putTextと置き換えるように書き換えたんよ
引数のfontはなくしてフォントサイズだけを渡す
ImageFont.truetypeがフォントサイズも引数にしているから、こうすれば動的なフォントサイズ変更にも対応できるな、ヨシ!って思ってね
それ実行したらPC落ちた
それでも数回やって問題なかった記憶はあるんだけどね(ただし数十秒程度の起動時間だった)
ちょっと長めに起動させたままにしたからリソース食いつぶしたのかな?と思ってる
593デフォルトの名無しさん (アウアウエー Sa52-FFa5)
2025/02/01(土) 12:06:57.91ID:Dm0gVBeEa 負荷掛け過ぎてコンデンサが爆発したんだろ
594 cha 警備員[Lv.1][新芽] (ワッチョイ 87bc-UTVl)
2025/02/09(日) 11:28:31.00ID:WswbN0Go0 全く関係の無いことですが、ここに書き込まさせてください。
あるサイトの問題集で、巨大な数の足し算を行うのに、整数型使えないから文字型使おうって書いてありました。
どうやったらその発想ができるんですか?
私プログラミング初心者なのですが、、、
あるサイトの問題集で、巨大な数の足し算を行うのに、整数型使えないから文字型使おうって書いてありました。
どうやったらその発想ができるんですか?
私プログラミング初心者なのですが、、、
595デフォルトの名無しさん (ワッチョイ 0f5f-Z3xl)
2025/02/09(日) 11:34:40.48ID:sBzel75s0 頭の出来だろw
597デフォルトの名無しさん (ワッチョイ 7fab-oD/y)
2025/02/09(日) 12:36:10.76ID:G/CYNigQ0 なんで関係ないと思うんだろうか
誰でもプログラミングができるって言っている人がいたので。
条件分岐とかループ処理のやつは解けるやつもあれば、解けないやつがあっても解説見れば次は出来ますが、文字列関係になると頭の中が[?]になるんです。
600デフォルトの名無しさん (ササクッテロ Spa3-Z3xl)
2025/02/09(日) 13:07:51.84ID:ql26y8Y/p 応用力…今の学校教育じゃ養われない能力が大切
応用力ですか、。なんか、数学と同じ感じですね。基礎ができたと思っても応用ができないみたいな。
ちなみに、応用力ってどの様に勉強すれば身につくものなんですか?
ちなみに、応用力ってどの様に勉強すれば身につくものなんですか?
602デフォルトの名無しさん (ワッチョイ 1e63-euVe)
2025/02/09(日) 13:46:11.17ID:k5BYzD4Y0 30桁くらいの2つの整数値を筆算で加算するときの手順をイメージして
それをプログラム化してみれば良い
そんなに難しくはないだろう
それをプログラム化してみれば良い
そんなに難しくはないだろう
603デフォルトの名無しさん (ワッチョイ 465c-6Hi7)
2025/02/09(日) 13:46:45.75ID:KfUn2qZi0 >>594
そのサイトクソだよ
そのサイトクソだよ
>>602
筆算のイメージはあるのですが、整数型でやろうとしたらエラーになって、実数型でやろうとしてもエラーになるので、なんでだろーって思って解説ん見てみたら、[文字列型にしましょう]って書いてあったので[?]ってなってしまうのです。
筆算のイメージはあるのですが、整数型でやろうとしたらエラーになって、実数型でやろうとしてもエラーになるので、なんでだろーって思って解説ん見てみたら、[文字列型にしましょう]って書いてあったので[?]ってなってしまうのです。
>>602
筆算のイメージもそのサイトの解説みてから、そうなんだと思ったんですけど、どうも初見だとイメージが沸かないんですよ。
筆算のイメージもそのサイトの解説みてから、そうなんだと思ったんですけど、どうも初見だとイメージが沸かないんですよ。
606デフォルトの名無しさん (ワッチョイ 1e63-euVe)
2025/02/09(日) 14:27:08.84ID:k5BYzD4Y0 イメージ湧かないなら、手を動かそう
そこに答えがあるよ
そこに答えがあるよ
608デフォルトの名無しさん (ワッチョイ de76-/Fy3)
2025/02/09(日) 17:03:10.36ID:TclGPY+C0 整数32bitでも64bitでも最大値は決まっている
でも大きい整数を表すのに64bit整数1つだけ使うとは決まっていない
桁溢れをプログラム的に検出して
溢れた分を別の64bit整数に記録すれば大きな整数を扱える
64bit+64bit+....
で整数を表す感じ
でも大きい整数を表すのに64bit整数1つだけ使うとは決まっていない
桁溢れをプログラム的に検出して
溢れた分を別の64bit整数に記録すれば大きな整数を扱える
64bit+64bit+....
で整数を表す感じ
609デフォルトの名無しさん (ワッチョイ de76-/Fy3)
2025/02/09(日) 17:04:41.81ID:TclGPY+C0 文字列って1Byte整数の配列でしょ?無駄が多いよ
8Byte整数の組合せを上で挙げたけど、8Byte整数の配列でも当然できる
8Byte整数の組合せを上で挙げたけど、8Byte整数の配列でも当然できる
610デフォルトの名無しさん (ワッチョイ 0f5f-Z3xl)
2025/02/09(日) 17:14:14.93ID:sBzel75s0 無駄を省くより可読性の方が大切
8bit時代のファミコンじゃ無いんだから
そんなキリキリ詰め込んだってわけわからん事になるだけ
8bit時代のファミコンじゃ無いんだから
そんなキリキリ詰め込んだってわけわからん事になるだけ
611デフォルトの名無しさん (ワッチョイ 465c-6Hi7)
2025/02/09(日) 17:36:57.81ID:KfUn2qZi0612デフォルトの名無しさん (ワッチョイ 0f5f-Z3xl)
2025/02/09(日) 18:12:23.04ID:sBzel75s0 桁上がりを別に判定しなきゃならないんだから扱えるギリギリの桁で計算するのはバカだろw
アセンブラなら桁あふれフラグ見て簡単に処理出来るだろうが、Cだと無理
アセンブラなら桁あふれフラグ見て簡単に処理出来るだろうが、Cだと無理
613デフォルトの名無しさん (ブーイモ MMaa-6Hi7)
2025/02/09(日) 18:46:42.50ID:fEimQ790M614デフォルトの名無しさん (ブーイモ MMaa-6Hi7)
2025/02/09(日) 18:57:40.14ID:fEimQ790M615デフォルトの名無しさん (ワッチョイ de76-/Fy3)
2025/02/09(日) 19:00:51.12ID:TclGPY+C0 整数値それぞれ (左右どっちだっけ)シフト1bitやって(1/2の値)足したのが最大値の半分超えたら桁溢れ
上位桁に溢れるだけ加算
Cでもできるに決まっているじゃん これだけだよ
上位桁に溢れるだけ加算
Cでもできるに決まっているじゃん これだけだよ
616デフォルトの名無しさん (ワッチョイ de76-/Fy3)
2025/02/09(日) 19:09:00.04ID:TclGPY+C0 文字列って溢れの分が1-9まであって大変そう
バイナリなら1bitだけでしょ
バイナリなら1bitだけでしょ
>>615
それってシフト演算の話ですか?(違ってたらごめんなさい。)
私、シフト演算は苦手なんですよね。
ただシフトするだけなら参考書とサイトみたらできますけど、ノールックでさらに四則演算になるとできないんですよ。
それってシフト演算の話ですか?(違ってたらごめんなさい。)
私、シフト演算は苦手なんですよね。
ただシフトするだけなら参考書とサイトみたらできますけど、ノールックでさらに四則演算になるとできないんですよ。
618デフォルトの名無しさん (ワッチョイ de76-/Fy3)
2025/02/09(日) 19:34:02.21ID:TclGPY+C0 考えたらシフトは無駄だった
64bit整数のうち63bit整数で考えて最上位ビットを溢れ判定に使えばよいだけ
あんまり書くと宿題の手伝いになってそう
64bit整数のうち63bit整数で考えて最上位ビットを溢れ判定に使えばよいだけ
あんまり書くと宿題の手伝いになってそう
619デフォルトの名無しさん (ブーイモ MMaa-6Hi7)
2025/02/09(日) 19:44:20.36ID:fEimQ790M620はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff32-DO7v)
2025/02/09(日) 19:51:22.43ID:vUYqd53r0 二進化十進はたとえば表示の処理なんかは簡単になるので無駄なわけではない。
621デフォルトの名無しさん (ワッチョイ 0f5f-Z3xl)
2025/02/09(日) 20:03:35.95ID:sBzel75s0 いまどき文字も16bit時代にケチケチすんなw
623デフォルトの名無しさん (ワッチョイ de76-/Fy3)
2025/02/10(月) 07:27:24.30ID:ZpC+jsE10 あと実数でやったと出たけど要注意
double verybignum;
verybignum += 1.0;
で1.0は桁を合わせると0に消えて足されない場合がある
double verybignum;
verybignum += 1.0;
で1.0は桁を合わせると0に消えて足されない場合がある
624デフォルトの名無しさん (アウアウエー Sa82-R6kM)
2025/02/10(月) 11:48:59.09ID:Z13/KCo3a 吊りならともかく本物の初心者なら文字コードを知らないってこともあるだろうな
多倍長整数をバイト列(1桁0-255)じゃなくて文字列(1桁0-9)で表すのは無駄が多いがアルゴリズムは同じはず
それでもピンと来ないなら先に文字コードについて理解するべき
多倍長整数をバイト列(1桁0-255)じゃなくて文字列(1桁0-9)で表すのは無駄が多いがアルゴリズムは同じはず
それでもピンと来ないなら先に文字コードについて理解するべき
IntelのアセンブラならBCDを扱う命令があったと思うけど、Cでやるなら文字に代入する時点で &= 0x0F、計算して出力する前に |= 0x30(でいいんだっけ?)かなー
626はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff32-XAIF)
2025/02/10(月) 13:19:14.90ID:cWC6BpGk0 やや強引だがアドレスとして同じでも比較すると等しくないという結果になる例を作ってみた。
https://wandbox.org/permlink/hpAkiEeiZclvQJsn
概念的にはポインタはアドレスというのでも間違いではないけど実際には言語のルールを把握していないと引っかかることもある。
ホスト規制でしばらく書き込めなかったので遅レスですまぬ。
https://wandbox.org/permlink/hpAkiEeiZclvQJsn
概念的にはポインタはアドレスというのでも間違いではないけど実際には言語のルールを把握していないと引っかかることもある。
ホスト規制でしばらく書き込めなかったので遅レスですまぬ。
627デフォルトの名無しさん (ワッチョイ 6a56-WFrT)
2025/02/10(月) 16:46:22.93ID:xKid5uSQ0 よく分からないがこうなる理由が分からないという意味の質問かな?
まあそうだとして、C言語では異なるオブジェクトへのポインタを比較出来ないってルールがある
それが行われているので、未定義の動作といってこのプログラムではコンパイラがどんな事をしてもいいことになってる
そのどんな事の中にはnot equalを表示するという動作も含まれているので、たまたまそうなったんでしょう
初心者がよくやるFAQレベルのミスなので、ポインタとオブジェクトを理解する意味でその辺も読んでみればもっと上達するでしょう
他にもヘンな部分があるので色々他の人のコードとかも読むといいね
まあそうだとして、C言語では異なるオブジェクトへのポインタを比較出来ないってルールがある
それが行われているので、未定義の動作といってこのプログラムではコンパイラがどんな事をしてもいいことになってる
そのどんな事の中にはnot equalを表示するという動作も含まれているので、たまたまそうなったんでしょう
初心者がよくやるFAQレベルのミスなので、ポインタとオブジェクトを理解する意味でその辺も読んでみればもっと上達するでしょう
他にもヘンな部分があるので色々他の人のコードとかも読むといいね
628はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff32-DO7v)
2025/02/10(月) 17:14:00.11ID:cWC6BpGk0 >>627
ポインタにはアドレスが入ってるだけという話題が出てたからそんなことはないという注意喚起。
ポインタにはアドレスが入ってるだけという話題が出てたからそんなことはないという注意喚起。
629はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff32-DO7v)
2025/02/10(月) 17:18:14.15ID:cWC6BpGk0 >>623
文意がよくわからんが初期化されてないから不定値になってるんじゃない?
文意がよくわからんが初期化されてないから不定値になってるんじゃない?
630デフォルトの名無しさん
2025/02/10(月) 17:44:23.62ID:1DQgWNxh0 これはどういうことなんだ?
foo、barの順にスタックに積まれる
bazにはfooの次の(intの境界の)番地(barと同じ)が入り、quzにはbarの番地が入る
bazとquzには同じ番地(値)が入っている
までは分かる
bazもquzもint型を指している
が、bazとquzの内容を比較するとことなる
なんじゃこりゃ〜
酔ってなくても分からなそう
foo、barの順にスタックに積まれる
bazにはfooの次の(intの境界の)番地(barと同じ)が入り、quzにはbarの番地が入る
bazとquzには同じ番地(値)が入っている
までは分かる
bazもquzもint型を指している
が、bazとquzの内容を比較するとことなる
なんじゃこりゃ〜
酔ってなくても分からなそう
633デフォルトの名無しさん (ササクッテロラ Spa3-Z3xl)
2025/02/11(火) 08:30:33.47ID:YWsMUNTvp 型変換すればOK
634はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff32-DO7v)
2025/02/11(火) 11:05:12.56ID:0+q77CUl0 >>632
強調しておくけど未定義は何が起こってもよい。
この場合は一応は式が式として評価されたかのように動作してるので比較的マシな部類で、未定義を踏んでいる箇所とは遠く離れた箇所で意味不明の動作が起こることもある。(起こってもよい。)
低レイヤから入った人は未定義をナメてることが結構あるとは思う。
どのような機械語にコンパイルされるか想像できる (と本人は思っている) 故の弊害だなぁ。
強調しておくけど未定義は何が起こってもよい。
この場合は一応は式が式として評価されたかのように動作してるので比較的マシな部類で、未定義を踏んでいる箇所とは遠く離れた箇所で意味不明の動作が起こることもある。(起こってもよい。)
低レイヤから入った人は未定義をナメてることが結構あるとは思う。
どのような機械語にコンパイルされるか想像できる (と本人は思っている) 故の弊害だなぁ。
635デフォルトの名無しさん (ササクッテロラ Spa3-Z3xl)
2025/02/11(火) 11:22:08.87ID:kmJe274sp Cなんてポインターは全部void*だろ
636デフォルトの名無しさん (ワッチョイ 1e63-euVe)
2025/02/11(火) 11:37:41.91ID:7Jzkf7ZG0 ご無体な
>>626 は僕のgccのパージョンだと
-O2 ありだと "not equal"
最適化なしだと "equal"
-S つけて .s をみると、-O2 ありのときポインタの比較すらせず単純に
puts("not equal");
とするコードを出力していた
"equal" のリテラルすらコードにはない
降参
-O2 ありだと "not equal"
最適化なしだと "equal"
-S つけて .s をみると、-O2 ありのときポインタの比較すらせず単純に
puts("not equal");
とするコードを出力していた
"equal" のリテラルすらコードにはない
降参
638デフォルトの名無しさん (ワッチョイ 4606-6Hi7)
2025/02/11(火) 13:33:00.20ID:jMpjlVqA0 strict aliasingのルールがなぜあるか理解してたらある程度予想つくだろ
639デフォルトの名無しさん (ワッチョイ de76-/Fy3)
2025/02/11(火) 14:32:56.35ID:VhWouMxY0 そもそも 8Byteや4Byte変数のポインタが例えば奇数の数値が許されるのかとか
640デフォルトの名無しさん (ワッチョイ 1e63-euVe)
2025/02/11(火) 14:40:28.60ID:7Jzkf7ZG0 文字列を指すポインタなら、一文字ずつインクリメント出来ないと困るよね
641デフォルトの名無しさん (ササクッテロラ Spa3-Z3xl)
2025/02/11(火) 14:52:06.30ID:+ybAiMfGp >>639
CPUによる
CPUによる
642デフォルトの名無しさん (ワッチョイ 4606-6Hi7)
2025/02/11(火) 15:43:23.98ID:jMpjlVqA0 >>639
それどこへのレス?
それどこへのレス?
643デフォルトの名無しさん (ラクッペペ MMc6-2Ktg)
2025/02/11(火) 16:44:48.97ID:ZUCQJ4rmM >>640
いつ困るんだ?
いつ困るんだ?
>>627は
最適化されると出力されるコードを推測することは無理だ、ということね
最適化されると出力されるコードを推測することは無理だ、ということね
645デフォルトの名無しさん (ワッチョイ 4606-6Hi7)
2025/02/11(火) 17:19:32.60ID:jMpjlVqA0 無理はいいすぎ
やったことないやつがしったかすんな
やったことないやつがしったかすんな
646デフォルトの名無しさん (ササクッテロラ Spa3-Z3xl)
2025/02/11(火) 17:20:33.85ID:0gFNLz1yp ARM系はほんと無理
647デフォルトの名無しさん (ワッチョイ 5302-aFRq)
2025/02/11(火) 18:37:22.58ID:2gjYX+K80 貴方みたいな人はほんと無理
とか言われたら傷ついちゃう
とか言われたら傷ついちゃう
648デフォルトの名無しさん (ワッチョイ 7f1b-hc6T)
2025/02/11(火) 21:27:22.00ID:JzAdQ4dR0 とりあえず読むべし
旧石器時代のポインタをご利用の皆様へ 〜provenance入門〜
https://qiita.com/__pandaman64__/items/1788a90ae5be79cc908b
旧石器時代のポインタをご利用の皆様へ 〜provenance入門〜
https://qiita.com/__pandaman64__/items/1788a90ae5be79cc908b
>>648
thx!
thx!
650デフォルトの名無しさん (ワッチョイ de76-/Fy3)
2025/02/11(火) 21:58:43.75ID:VhWouMxY0 こんなの分割コンパイルしたら分からないし ライブラリならなおさら
実行時にどのオブジェクト由来なんて情報持っておけるのか?
int func(int *ip, int *iq)
{
if (ip == iq) {
} else {
}
}
実行時にどのオブジェクト由来なんて情報持っておけるのか?
int func(int *ip, int *iq)
{
if (ip == iq) {
} else {
}
}
651デフォルトの名無しさん (ワッチョイ 46a9-6Hi7)
2025/02/11(火) 22:39:07.83ID:jMpjlVqA0 コンパイル時に決まってんじゃん
652デフォルトの名無しさん (スップ Sd4a-26Jk)
2025/02/11(火) 23:02:33.92ID:DgpMDse2d このコテハンの人いつもこんなだよね
まともに出来るのが規格のコピペみたいな事だけで、それ以外だとすぐとんちんかんな事言い出して突っ込まれてる
まともに出来るのが規格のコピペみたいな事だけで、それ以外だとすぐとんちんかんな事言い出して突っ込まれてる
653はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff32-DO7v)
2025/02/11(火) 23:17:19.29ID:0+q77CUl0 >>650
わかる範囲でやるってだけ。
わからないところは保守的なコードを生成する。
ただ、今は LTO があるのでわかる範囲がだいぶん広い。
わからないからこそプログラマは未定義なことをしないと仮定した最適化をする (未定義を踏んでたらむちゃくちゃになる) という場合もある。
わかる範囲でやるってだけ。
わからないところは保守的なコードを生成する。
ただ、今は LTO があるのでわかる範囲がだいぶん広い。
わからないからこそプログラマは未定義なことをしないと仮定した最適化をする (未定義を踏んでたらむちゃくちゃになる) という場合もある。
654デフォルトの名無しさん (ワッチョイ d301-XAIF)
2025/02/12(水) 10:25:19.84ID:WVzDbo940 >>648
ポインタpとqの値が同じにならないんだけど…
ポインタpとqの値が同じにならないんだけど…
655デフォルトの名無しさん (ササクッテロラ Spa3-Z3xl)
2025/02/12(水) 10:28:46.36ID:p1VJlK94p Cに余計なもん付けたらいにしえのLinux由来のコードが通らなくなるだろ
656デフォルトの名無しさん (ワッチョイ 6a4d-WFrT)
2025/02/12(水) 11:20:54.68ID:OojhOsKe0657627 (ワッチョイ 6a4d-WFrT)
2025/02/12(水) 11:21:58.36ID:OojhOsKe0 >>631
未定義の動作なので2行目から7行目のような事が起きるかどうかは分からない
仮に未定義の動作がなかったとしても行目を自明のように仮定することは出来ない
アーキテクチャが色々ある中そういう処理系もあればそうでない処理系もあるしCでは何も規定してない
スタックの仕組みがないものもあればポインタをそもそも数値や番地で扱わないアーキテクチャもある
後段も同様
未定義の動作なので2行目から7行目のような事が起きるかどうかは分からない
仮に未定義の動作がなかったとしても行目を自明のように仮定することは出来ない
アーキテクチャが色々ある中そういう処理系もあればそうでない処理系もあるしCでは何も規定してない
スタックの仕組みがないものもあればポインタをそもそも数値や番地で扱わないアーキテクチャもある
後段も同様
658627 (ワッチョイ 6a4d-WFrT)
2025/02/12(水) 11:22:39.59ID:OojhOsKe0659はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff32-XAIF)
2025/02/12(水) 11:47:09.26ID:cXwd7RB80 >>658
言語仕様上で未定義動作とされている状況が実際の機械の上でどう動作するか (その動作は想像できない) という文脈でヤバさを伝えるためになるべく想像外な結果を生む実例を出そうとしているので最適化は関係ある。
言語仕様上で未定義動作とされている状況が実際の機械の上でどう動作するか (その動作は想像できない) という文脈でヤバさを伝えるためになるべく想像外な結果を生む実例を出そうとしているので最適化は関係ある。
660デフォルトの名無しさん (ササクッテロラ Spa3-Z3xl)
2025/02/12(水) 11:50:24.83ID:XyTZkBHop 最適化しないと無駄なコードや無意味なコードも忠実に出力されるからなぁ
661デフォルトの名無しさん (ワッチョイ 4618-6Hi7)
2025/02/12(水) 12:49:03.57ID:J/UI6pYQ0662デフォルトの名無しさん (ワッチョイ de76-/Fy3)
2025/02/12(水) 13:26:30.21ID:7GgOweZ60 えーと未定義や環境依存を使ったりとかは
Cおよびコンピュータの理解が不十分な
質の劣るプログラマが存在するからでしょうに
そういう人達に重要プログラムを書かせる責任問題でもある
Cおよびコンピュータの理解が不十分な
質の劣るプログラマが存在するからでしょうに
そういう人達に重要プログラムを書かせる責任問題でもある
663デフォルトの名無しさん (ワッチョイ 5302-aFRq)
2025/02/12(水) 15:09:37.68ID:+Pz/j8Me0 相手に過大に説明を要求して、自分は分かろうとしない者は嫌われちゃうよ
664デフォルトの名無しさん (ワッチョイ 1e63-euVe)
2025/02/12(水) 15:17:35.67ID:iId2MJ1V0 gccのフォーラムで質問出してみたら?
参考にできる回答が得られるかも知れないよ
参考にできる回答が得られるかも知れないよ
665デフォルトの名無しさん (ワッチョイ d301-XAIF)
2025/02/12(水) 15:52:05.07ID:WVzDbo940 >ポインタにはprovenanceという,どのオブジェクト由来かの情報が含まれています
↑まずこれがおかしい
↑まずこれがおかしい
666デフォルトの名無しさん (ササクッテロラ Spa3-Z3xl)
2025/02/12(水) 16:26:28.23ID:I956D6cKp ランタイムじゃなくてコンパイル時の静的なルールだろうね
667デフォルトの名無しさん (ワッチョイ ea07-XAIF)
2025/02/12(水) 17:12:16.79ID:1bCkYFVx0 投資家はRustを信頼するって言ってるんだから、Rustとおんなじようにすればいいだけ
俺はC/C++派なので、どんどんRustの実績をぶんどってくるべきって思ってる
俺はC/C++派なので、どんどんRustの実績をぶんどってくるべきって思ってる
668はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff32-DO7v)
2025/02/12(水) 17:47:13.48ID:cXwd7RB80 移植性が求められることばかりでもないし、最適化などのオプションも頻繁に取ったりつけたりしないし、思い通りに動かなければアセンブルリストみたりするけど、コンパイラが出力するコードが予想通りかなんて観点はないし、実践的ではないけど、人を小馬鹿にしたりしなければ勉強になって面白い話なのに
671デフォルトの名無しさん (ワッチョイ 8655-u07z)
2025/02/15(土) 13:31:47.16ID:vKfoke/00 Arduino (ESP32)で文字列変換をしたいです。
tの文字列をtm structに変換したいんですが,タイムゾーンのオフセット部分の+9:00の扱いが分かりません。
%Zはタイムゾーンのオフセットを分を指定する場合で、%zだとUTCなどタイムゾーン名を指定する場合に使うみたいでした。
どうやるんでしょうか?
tps://pastebin.com/Jcyj8BG5
tの文字列をtm structに変換したいんですが,タイムゾーンのオフセット部分の+9:00の扱いが分かりません。
%Zはタイムゾーンのオフセットを分を指定する場合で、%zだとUTCなどタイムゾーン名を指定する場合に使うみたいでした。
どうやるんでしょうか?
tps://pastebin.com/Jcyj8BG5
672はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff32-XAIF)
2025/02/15(土) 15:04:44.95ID:ewglApEf0 strptime で %z や %Z でタイムゾーンを扱えるのは glibc の拡張 (他で真似している場合もあるかもしれんけど) なんだけど、 Arduino の C ライブラリは glibc ベースなの?
そうじゃないなら各ライブラリのドキュメント (またはソースコード) を読まないとわからないし、そもそもそんな機能はないのかもしれない。
そうじゃないなら各ライブラリのドキュメント (またはソースコード) を読まないとわからないし、そもそもそんな機能はないのかもしれない。
673デフォルトの名無しさん (ワッチョイ 5357-u07z)
2025/02/15(土) 16:19:42.94ID:BNBq5D0N0674デフォルトの名無しさん (ブーイモ MM3b-6Hi7)
2025/02/15(土) 16:25:20.46ID:Q9F/iLI2M やり方思いついたならやれ
675はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff32-XAIF)
2025/02/15(土) 16:39:17.28ID:ewglApEf0 >>673
どうやら Arduino は newlib ベースの模様。
newlib の strptime はタイムゾーンをサポートしてない。
どうにかしてタイムゾーンを扱いたい場合にどうやって実装するかは個々の事情によると思うのでなんとも言えない。
実績のある実装をどこかから持ってきたほうが良いんじゃないかと個人的には思う。
https://www.google.com/search?q=strptime+implementation+c
パースするだけならたいして複雑なものではないので自分で書いてみてもいいかな。
ちなみにタイムゾーンを略称で扱うのは面倒な事情が絡む。
タイムゾーンを標準時からの差の時間で表すときはその時点での差があれば十分なので簡単なんだけど、略称で表すときはサマータイムの情報もいる。
たとえばニューヨークのタイムゾーン (EST) は普段は -05:00 だけどサマータイム中は -04:00 になる。
単に EST=-05:00 というわけではない。
そんでもってこのへんの扱いが面倒なのは変わることは割とよくあるということ。
サマータイムの期間が変わったりずらす時間が変わったり、あるいはゾーンが増えたり減ったりするのは政治的な判断なので情報を定期的に更新する前提じゃないときちんと運用できない。
パソコンの OS だと適当なタイミングで更新する仕組みがあるのが普通だけど組み込みシステムだとそうもいかないこともある。
どうやら Arduino は newlib ベースの模様。
newlib の strptime はタイムゾーンをサポートしてない。
どうにかしてタイムゾーンを扱いたい場合にどうやって実装するかは個々の事情によると思うのでなんとも言えない。
実績のある実装をどこかから持ってきたほうが良いんじゃないかと個人的には思う。
https://www.google.com/search?q=strptime+implementation+c
パースするだけならたいして複雑なものではないので自分で書いてみてもいいかな。
ちなみにタイムゾーンを略称で扱うのは面倒な事情が絡む。
タイムゾーンを標準時からの差の時間で表すときはその時点での差があれば十分なので簡単なんだけど、略称で表すときはサマータイムの情報もいる。
たとえばニューヨークのタイムゾーン (EST) は普段は -05:00 だけどサマータイム中は -04:00 になる。
単に EST=-05:00 というわけではない。
そんでもってこのへんの扱いが面倒なのは変わることは割とよくあるということ。
サマータイムの期間が変わったりずらす時間が変わったり、あるいはゾーンが増えたり減ったりするのは政治的な判断なので情報を定期的に更新する前提じゃないときちんと運用できない。
パソコンの OS だと適当なタイミングで更新する仕組みがあるのが普通だけど組み込みシステムだとそうもいかないこともある。
676はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff32-DO7v)
2025/02/15(土) 21:12:02.85ID:ewglApEf0 基本的なことを書き忘れてた。
strptime は C の言語仕様には無い関数で、 POSIX (UNIX 系 OS の統一仕様) にある。
POSIX は最低限の共通部分だけをまとめたもので実装には雑多な拡張を入れる前提なので各実装によってサポート内容が違う。
POSIX 準拠ではない環境で部分的に POSIX を真似てるだけ (POSIX の最低限の要求も満たしてない) ということもある。
strptime は C の言語仕様には無い関数で、 POSIX (UNIX 系 OS の統一仕様) にある。
POSIX は最低限の共通部分だけをまとめたもので実装には雑多な拡張を入れる前提なので各実装によってサポート内容が違う。
POSIX 準拠ではない環境で部分的に POSIX を真似てるだけ (POSIX の最低限の要求も満たしてない) ということもある。
677デフォルトの名無しさん (アウアウエー Sa13-9cJ9)
2025/02/16(日) 12:03:53.19ID:rAQQ2/+ca 最初からtmstructをUTCで取得した方が楽ジャマイカ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】日本代表MF 中村敬斗 ボリビア戦のスーパーゴールに「惚れるわ」「痺れる程のゴールこれでご飯何杯いけるのよ」 [阿弥陀ヶ峰★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
- 自閉症が「んなっしょい」と連呼するお🏡
- 日本人の海外旅行したきのマナーよくなったのはいつから
- へそグリグリ
- 結婚しないやつは異性は嫌いなの?
