C言語なら俺に聞け 163

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7bba-Lem2)
垢版 |
2024/07/16(火) 22:43:54.18ID:ZrsCjURC0
!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
2025/01/23(木) 20:41:15.58ID:1Dl3E2N00
前橋和弥って人の本読んで理解した 長らく絶版だったようだが後継本がある
2025/01/23(木) 21:30:26.88ID:auGoEn4C0
>>559
私もあれで学んだ ドロイド君みたいな表紙の旧版
わかりやすいと思う
2025/01/25(土) 14:13:44.88ID:6VZytBSB0
秘伝C言語問答 ポインタ編
562デフォルトの名無しさん (ワッチョイ cf2a-wVPw)
垢版 |
2025/01/25(土) 20:08:03.53ID:ZNC43F5H0
ポインタと云うは死ぬ事と見付けたり
2025/01/25(土) 20:36:32.21ID:KsLTQwZH0
ポインタには殺傷能力があります。
使う人は銃器の取扱免許が必須です。
564デフォルトの名無しさん (アウアウエー Sa52-FFa5)
垢版 |
2025/01/26(日) 22:56:06.95ID:s+0AyHDZa
ただのアドレッシング
++したり+=1したら判る
2025/01/28(火) 10:28:12.96ID:q8xQ82Vup
ねえよ
おまえらなら配列ですら殺傷能力あるだろw
2025/01/28(火) 14:54:54.74ID:CBv6ZpxK0
配列で死ぬ奴は四天王でも最弱な奴
2025/01/28(火) 20:42:19.32ID:C7gY9jH/0
だからさぁ 変数や関数スコープって アドレスでアクセスされたら
アクセス拒否できる仕組みは無いよね?
2025/01/29(水) 06:54:15.10ID:NyAjG/eE0
で?
2025/01/29(水) 15:06:45.80ID:S8KruiE+0
あったらCの柔軟性が失われると思います
2025/01/29(水) 15:10:06.13ID:8Al2cjCTp
さすがにセグメント違反は弾かれるぞ
まあ、CPUやOSの機能だけどな
2025/01/29(水) 15:25:45.05ID:ViyYX/ol0
雑談として
いろいろチェックのついたポインタがあっても、それをOFFにできれば問題ないんだぞ

スピードの要らないところにもCは使われているので、そういう部分は、「ごてごて」でもいいんだよ
572デフォルトの名無しさん (ワッチョイ 0e76-Vgbt)
垢版 |
2025/01/29(水) 19:33:45.26ID:0piGtrVr0
いやポインタのはなしをしたいのではなくて
高級言語で設計制限を行うことで可読性や設計ミスが高まるという言説があるよね
構造化プログラミングやオブジェクト指向の類

でも実際稼働するのはコンパイル後のマシン語で
gotoというかジャンプ命令もあれば
プライベートへのアクセスを実行時にチェックする機構とか無いわけでしょ

不具合調査はソースコードも大事だけどマシン語の流れも追わなけば
本当のところはわからんよね
更には投機実行や分岐予測もあるわけで
実際の稼働はソースコードによらないしマシン語とも異なる可能性が存在する
2025/01/29(水) 19:43:26.10ID:4AeLlQVLp
え?
最終的にCPUはマシン語として解釈して動くだけだからなぁ
人間がどう捉えようがそこは変えようが無いんだ
2025/01/29(水) 22:18:59.64ID:Ow/mCh010
会話として成立していますか?
575デフォルトの名無しさん (ワッチョイ 0e76-Vgbt)
垢版 |
2025/01/30(木) 00:57:38.52ID:dOgLqtqk0
例えば goto文を可能な限り排除して構造化プログラミングというものが提唱されてきた
でもコンパイル後のマシン語にはむき出しのジャンプ命令が使われる
構造化されたループや分岐も実際はジャンプ命令
処理のトレースでもデバッグでもソースコードとマシン語と両方追う必要があるが
goto文を排除した理念の意味が…
ソースコードは見やすいがマシン語はそうではないよね?っていう愚痴のようなもの
576デフォルトの名無しさん (ワッチョイ 4e2a-cFDo)
垢版 |
2025/01/30(木) 08:50:49.07ID:w2UDYxPo0
むき出しのジャンプ命令...
赤裸々なMovとか、一糸まとわぬAdd とか。
2025/01/30(木) 09:29:28.34ID:x87hbq3s0
コンパイラひバグが無いかぎりは高級言語のソース通りに動くから大丈夫だぞ
昔のファミコン並みに処理ステップ数に要するクロックを数えてラインスクロールさせるとかでもしない限りタイミングも気にする必要無いし
2025/01/30(木) 11:48:21.95ID:1fx7BZxf0
むしろマルチコアの問題のほうがでかい 自分も、高効率に書ける自信がない
2025/01/30(木) 12:22:11.10ID:K2FsQpfY0
C言語に限らずJavaでもPythonでもLispでも最終的にはブランチしまくりヒープアクセスしまくりなマシン語で動いてるんだから心配しても意味ない。
たまたまC言語はマシン語に近い距離にある言語なのでマシン語「でも」デバッグできてしまうだけの話。
2025/01/30(木) 16:25:32.68ID:dOgLqtqk0
コンパイラ最適化の時点で追うのが難しい
ましてや投機実行とくると…
2025/01/30(木) 16:27:29.00ID:dOgLqtqk0
思い出した continue や break は優遇されている印象
2025/01/31(金) 01:34:44.08ID:5fFn3R6V0
Pythonだって安全じゃないしな
俺この間自作したPythonプログラム動かしたら数秒後PCが落ちた
XPとかWindows7とかじゃないぜ、Windows11の最新が突如電源が切れたんだよプツンて
まじでビビった

ちなみに原因は日本語フォントを読み込むコードをカメラキャプチャのループ内(数十から数百ミリ秒ぐらい?)で実行していた
C言語のポインタは危険とか言うけどさ、一番危険なのは俺みたいな馬鹿なコード書く奴の存在だよ
2025/01/31(金) 09:59:26.90ID:4ClqIqkw0
君のPCが落ちる程度は許容範囲
2025/01/31(金) 11:00:00.59ID:uHjOTXCx0
考えようによっては、タチの悪いDoSじゃないかw
カメラごときで全体落としてんじゃねえよ > カーネル層

ロジックバグなんだろうけど、こういうのはしかし難しいね
2025/01/31(金) 11:20:36.48ID:h9+hJoTPp
ドライバの秘孔を突いただけだから
2025/01/31(金) 11:30:08.08ID:4ClqIqkw0
ドライバーに致命的不具合があったとしても
ブルスクになる程度で
電源断まで行くと言うのは考え難い
2025/01/31(金) 11:49:46.06ID:h9+hJoTPp
ドライバの秘孔を突いてカメラに搭載のチップが電源ライン直結になったとかじゃね?
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が落ちた
残像攻撃を受けた感じだったのかもしれん、コロ先生の分身みたいなやつ
2025/01/31(金) 19:36:45.83ID:R7Zj8Mog0
プリエンプティブカーネル使っててスリープなしのループごときでそんなことあり得るのか?
逆にそうなった仕組みが知りたい。
2025/01/31(金) 19:40:58.83ID:1pwkweKb0
インテルのTurboBoostだかで負荷もブーストされて排熱が間に合わずMBにダメージ与えつつ逝ったんじゃないの
PC買い換えた方がいいよ
2025/01/31(金) 19:54:38.13ID:R/wyJ37S0
ブルースクリーンもなしにおちるなんてハード不良
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落ちた
それでも数回やって問題なかった記憶はあるんだけどね(ただし数十秒程度の起動時間だった)
ちょっと長めに起動させたままにしたからリソース食いつぶしたのかな?と思ってる
593デフォルトの名無しさん (アウアウエー Sa52-FFa5)
垢版 |
2025/02/01(土) 12:06:57.91ID:Dm0gVBeEa
負荷掛け過ぎてコンデンサが爆発したんだろ
2025/02/09(日) 11:28:31.00ID:WswbN0Go0
全く関係の無いことですが、ここに書き込まさせてください。
あるサイトの問題集で、巨大な数の足し算を行うのに、整数型使えないから文字型使おうって書いてありました。
どうやったらその発想ができるんですか?
私プログラミング初心者なのですが、、、
2025/02/09(日) 11:34:40.48ID:sBzel75s0
頭の出来だろw
2025/02/09(日) 11:39:35.27ID:WswbN0Go0
プログラミングに頭の出来って関係あるんですか?
2025/02/09(日) 12:36:10.76ID:G/CYNigQ0
なんで関係ないと思うんだろうか
2025/02/09(日) 12:44:36.92ID:WswbN0Go0
誰でもプログラミングができるって言っている人がいたので。
2025/02/09(日) 12:52:16.03ID:WswbN0Go0
条件分岐とかループ処理のやつは解けるやつもあれば、解けないやつがあっても解説見れば次は出来ますが、文字列関係になると頭の中が[?]になるんです。
2025/02/09(日) 13:07:51.84ID:ql26y8Y/p
応用力…今の学校教育じゃ養われない能力が大切
2025/02/09(日) 13:16:44.53ID:WswbN0Go0
応用力ですか、。なんか、数学と同じ感じですね。基礎ができたと思っても応用ができないみたいな。
ちなみに、応用力ってどの様に勉強すれば身につくものなんですか?
2025/02/09(日) 13:46:11.17ID:k5BYzD4Y0
30桁くらいの2つの整数値を筆算で加算するときの手順をイメージして
それをプログラム化してみれば良い
そんなに難しくはないだろう
2025/02/09(日) 13:46:45.75ID:KfUn2qZi0
>>594
そのサイトクソだよ
2025/02/09(日) 14:22:12.60ID:WswbN0Go0
>>602
筆算のイメージはあるのですが、整数型でやろうとしたらエラーになって、実数型でやろうとしてもエラーになるので、なんでだろーって思って解説ん見てみたら、[文字列型にしましょう]って書いてあったので[?]ってなってしまうのです。
2025/02/09(日) 14:25:19.10ID:WswbN0Go0
>>602
筆算のイメージもそのサイトの解説みてから、そうなんだと思ったんですけど、どうも初見だとイメージが沸かないんですよ。
2025/02/09(日) 14:27:08.84ID:k5BYzD4Y0
イメージ湧かないなら、手を動かそう
そこに答えがあるよ
2025/02/09(日) 14:55:17.16ID:WswbN0Go0
>>606
なるほど、頭で考えるより、手で考えた方が良いのですか。
実践してみます。ありがとうございます!
2025/02/09(日) 17:03:10.36ID:TclGPY+C0
整数32bitでも64bitでも最大値は決まっている
でも大きい整数を表すのに64bit整数1つだけ使うとは決まっていない

桁溢れをプログラム的に検出して
溢れた分を別の64bit整数に記録すれば大きな整数を扱える
64bit+64bit+....
で整数を表す感じ
2025/02/09(日) 17:04:41.81ID:TclGPY+C0
文字列って1Byte整数の配列でしょ?無駄が多いよ
8Byte整数の組合せを上で挙げたけど、8Byte整数の配列でも当然できる
2025/02/09(日) 17:14:14.93ID:sBzel75s0
無駄を省くより可読性の方が大切
8bit時代のファミコンじゃ無いんだから
そんなキリキリ詰め込んだってわけわからん事になるだけ
2025/02/09(日) 17:36:57.81ID:KfUn2qZi0
>>610
的外れ
いきるな初心者
2025/02/09(日) 18:12:23.04ID:sBzel75s0
桁上がりを別に判定しなきゃならないんだから扱えるギリギリの桁で計算するのはバカだろw
アセンブラなら桁あふれフラグ見て簡単に処理出来るだろうが、Cだと無理
2025/02/09(日) 18:46:42.50ID:fEimQ790M
>>604
どこのサイト?
それ書いてるやつ多分バカだぞ
参考にすんな
2025/02/09(日) 18:57:40.14ID:fEimQ790M
>>610
charでやるのは馬鹿だがアルゴリズムは同じなんだから可読性は変わらない
メモリもほぼ変わらない
2025/02/09(日) 19:00:51.12ID:TclGPY+C0
整数値それぞれ (左右どっちだっけ)シフト1bitやって(1/2の値)足したのが最大値の半分超えたら桁溢れ
上位桁に溢れるだけ加算
Cでもできるに決まっているじゃん これだけだよ
2025/02/09(日) 19:09:00.04ID:TclGPY+C0
文字列って溢れの分が1-9まであって大変そう
バイナリなら1bitだけでしょ
2025/02/09(日) 19:15:54.80ID:WswbN0Go0
>>615
それってシフト演算の話ですか?(違ってたらごめんなさい。)
私、シフト演算は苦手なんですよね。
ただシフトするだけなら参考書とサイトみたらできますけど、ノールックでさらに四則演算になるとできないんですよ。
2025/02/09(日) 19:34:02.21ID:TclGPY+C0
考えたらシフトは無駄だった
64bit整数のうち63bit整数で考えて最上位ビットを溢れ判定に使えばよいだけ
あんまり書くと宿題の手伝いになってそう
2025/02/09(日) 19:44:20.36ID:fEimQ790M
>>618
足したあとの結果から判定する
教えるなら定石を教えろや
2025/02/09(日) 19:51:22.43ID:vUYqd53r0
二進化十進はたとえば表示の処理なんかは簡単になるので無駄なわけではない。
2025/02/09(日) 20:03:35.95ID:sBzel75s0
いまどき文字も16bit時代にケチケチすんなw
2025/02/09(日) 22:27:12.88ID:WswbN0Go0
>>618
なるほどですね。因みにこれは宿題ではなく、自主学習のやつです。とあるサイトの解説がよくわからなくてこの板の方々に質問させていただきました。
ありがとうございます。
2025/02/10(月) 07:27:24.30ID:ZpC+jsE10
あと実数でやったと出たけど要注意
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)で表すのは無駄が多いがアルゴリズムは同じはず
それでもピンと来ないなら先に文字コードについて理解するべき
2025/02/10(月) 13:13:09.48ID:BwJhqJpr0
IntelのアセンブラならBCDを扱う命令があったと思うけど、Cでやるなら文字に代入する時点で &= 0x0F、計算して出力する前に |= 0x30(でいいんだっけ?)かなー
2025/02/10(月) 13:19:14.90ID:cWC6BpGk0
やや強引だがアドレスとして同じでも比較すると等しくないという結果になる例を作ってみた。
https://wandbox.org/permlink/hpAkiEeiZclvQJsn
概念的にはポインタはアドレスというのでも間違いではないけど実際には言語のルールを把握していないと引っかかることもある。

ホスト規制でしばらく書き込めなかったので遅レスですまぬ。
627デフォルトの名無しさん (ワッチョイ 6a56-WFrT)
垢版 |
2025/02/10(月) 16:46:22.93ID:xKid5uSQ0
よく分からないがこうなる理由が分からないという意味の質問かな?
まあそうだとして、C言語では異なるオブジェクトへのポインタを比較出来ないってルールがある
それが行われているので、未定義の動作といってこのプログラムではコンパイラがどんな事をしてもいいことになってる
そのどんな事の中にはnot equalを表示するという動作も含まれているので、たまたまそうなったんでしょう
初心者がよくやるFAQレベルのミスなので、ポインタとオブジェクトを理解する意味でその辺も読んでみればもっと上達するでしょう
他にもヘンな部分があるので色々他の人のコードとかも読むといいね
2025/02/10(月) 17:14:00.11ID:cWC6BpGk0
>>627
ポインタにはアドレスが入ってるだけという話題が出てたからそんなことはないという注意喚起。
2025/02/10(月) 17:18:14.15ID:cWC6BpGk0
>>623
文意がよくわからんが初期化されてないから不定値になってるんじゃない?
2025/02/10(月) 17:44:23.62ID:1DQgWNxh0
>>627
> よく分からないがこうなる理由が分からないという意味の質問かな?
このスレは初めてか?
はちみつさんがそんな質問するわけないだろ
2025/02/11(火) 00:58:16.10ID:nkHTE6y60
これはどういうことなんだ?
foo、barの順にスタックに積まれる
bazにはfooの次の(intの境界の)番地(barと同じ)が入り、quzにはbarの番地が入る
bazとquzには同じ番地(値)が入っている
までは分かる
bazもquzもint型を指している
が、bazとquzの内容を比較するとことなる
なんじゃこりゃ〜
酔ってなくても分からなそう
2025/02/11(火) 01:04:37.69ID:nkHTE6y60
>>627がいうことがそれなのか
未定義だと
アセンブラ脳だと同じとみなしてくれてよさそうだけど、難しいね…
2025/02/11(火) 08:30:33.47ID:YWsMUNTvp
型変換すればOK
2025/02/11(火) 11:05:12.56ID:0+q77CUl0
>>632
強調しておくけど未定義は何が起こってもよい。
この場合は一応は式が式として評価されたかのように動作してるので比較的マシな部類で、未定義を踏んでいる箇所とは遠く離れた箇所で意味不明の動作が起こることもある。(起こってもよい。)
低レイヤから入った人は未定義をナメてることが結構あるとは思う。
どのような機械語にコンパイルされるか想像できる (と本人は思っている) 故の弊害だなぁ。
2025/02/11(火) 11:22:08.87ID:kmJe274sp
Cなんてポインターは全部void*だろ
2025/02/11(火) 11:37:41.91ID:7Jzkf7ZG0
ご無体な
2025/02/11(火) 12:35:30.87ID:m4FoXgHJ0
>>626 は僕のgccのパージョンだと
-O2 ありだと "not equal"
最適化なしだと "equal"

-S つけて .s をみると、-O2 ありのときポインタの比較すらせず単純に
puts("not equal");
とするコードを出力していた
"equal" のリテラルすらコードにはない

降参
2025/02/11(火) 13:33:00.20ID:jMpjlVqA0
strict aliasingのルールがなぜあるか理解してたらある程度予想つくだろ
639デフォルトの名無しさん (ワッチョイ de76-/Fy3)
垢版 |
2025/02/11(火) 14:32:56.35ID:VhWouMxY0
そもそも 8Byteや4Byte変数のポインタが例えば奇数の数値が許されるのかとか
2025/02/11(火) 14:40:28.60ID:7Jzkf7ZG0
文字列を指すポインタなら、一文字ずつインクリメント出来ないと困るよね
2025/02/11(火) 14:52:06.30ID:+ybAiMfGp
>>639
CPUによる
2025/02/11(火) 15:43:23.98ID:jMpjlVqA0
>>639
それどこへのレス?
2025/02/11(火) 16:44:48.97ID:ZUCQJ4rmM
>>640
いつ困るんだ?
2025/02/11(火) 16:59:49.92ID:MJELNENN0
>>627
最適化されると出力されるコードを推測することは無理だ、ということね
2025/02/11(火) 17:19:32.60ID:jMpjlVqA0
無理はいいすぎ
やったことないやつがしったかすんな
2025/02/11(火) 17:20:33.85ID:0gFNLz1yp
ARM系はほんと無理
2025/02/11(火) 18:37:22.58ID:2gjYX+K80
貴方みたいな人はほんと無理
とか言われたら傷ついちゃう
2025/02/11(火) 21:27:22.00ID:JzAdQ4dR0
とりあえず読むべし
旧石器時代のポインタをご利用の皆様へ 〜provenance入門〜
https://qiita.com/__pandaman64__/items/1788a90ae5be79cc908b
2025/02/11(火) 21:52:04.81ID:m4FoXgHJ0
>>648
thx!
2025/02/11(火) 21:58:43.75ID:VhWouMxY0
こんなの分割コンパイルしたら分からないし ライブラリならなおさら
実行時にどのオブジェクト由来なんて情報持っておけるのか?

int func(int *ip, int *iq)
{
if (ip == iq) {
} else {
}
}
2025/02/11(火) 22:39:07.83ID:jMpjlVqA0
コンパイル時に決まってんじゃん
652デフォルトの名無しさん (スップ Sd4a-26Jk)
垢版 |
2025/02/11(火) 23:02:33.92ID:DgpMDse2d
このコテハンの人いつもこんなだよね
まともに出来るのが規格のコピペみたいな事だけで、それ以外だとすぐとんちんかんな事言い出して突っ込まれてる
2025/02/11(火) 23:17:19.29ID:0+q77CUl0
>>650
わかる範囲でやるってだけ。
わからないところは保守的なコードを生成する。
ただ、今は LTO があるのでわかる範囲がだいぶん広い。

わからないからこそプログラマは未定義なことをしないと仮定した最適化をする (未定義を踏んでたらむちゃくちゃになる) という場合もある。
2025/02/12(水) 10:25:19.84ID:WVzDbo940
>>648
ポインタpとqの値が同じにならないんだけど…
2025/02/12(水) 10:28:46.36ID:p1VJlK94p
Cに余計なもん付けたらいにしえのLinux由来のコードが通らなくなるだろ
656デフォルトの名無しさん (ワッチョイ 6a4d-WFrT)
垢版 |
2025/02/12(水) 11:20:54.68ID:OojhOsKe0
未定義の動作がどういうことなのかよく分かっていない人がいるみたいなので補足しておく

>>628
未定義の動作を引き起こすプログラムを提示しても結果が分からないし毎回違う可能性もある点でこれだと何も示せてない
きつい言い方かもしれないが注意喚起になっていない
>>634の2行目を見るとコードの動き方に対しての認識として不定の動作と未定義の動作を混同して勘違いしてるかも知れないね
657627 (ワッチョイ 6a4d-WFrT)
垢版 |
2025/02/12(水) 11:21:58.36ID:OojhOsKe0
>>631
未定義の動作なので2行目から7行目のような事が起きるかどうかは分からない
仮に未定義の動作がなかったとしても行目を自明のように仮定することは出来ない
アーキテクチャが色々ある中そういう処理系もあればそうでない処理系もあるしCでは何も規定してない
スタックの仕組みがないものもあればポインタをそもそも数値や番地で扱わないアーキテクチャもある
後段も同様
658627 (ワッチョイ 6a4d-WFrT)
垢版 |
2025/02/12(水) 11:22:39.59ID:OojhOsKe0
>>644
コンパイラの動作に対して必要条件が何も設定されない状態になるという話で最適化は全く関係ない

ちなみに今回の話はK&Rの頃からあるルールなので>>648とはちょっと違う
ただ内容は大体同じでポインタはオブジェクトを指してるもので、その内部形式や扱い方はユーザーが知る必要はない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況