1 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 10:40:30.02 ID:PyoNDBFu0.net] !extend:checked:vvvvv:1000:512 (新スレ立ての際上記コマンドを2行書き込んでください) C言語の話題のみ取り扱います C++の話題はC++スレへ 質問には最低限の情報(ソース/コンパイラ/OS)を付ける 数行で収まらないソースは以下を適当に使ってURLを晒す https://paiza.io/ https://ideone.com/ codepad.org/ C17 www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf C11 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 www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf kikakurui.com/x3/X3010-2003-01.html C FAQ 日本語訳 www.kouno.jp/home/c_faq/ JPCERT C コーディングスタンダード https://www.jpcert.or.jp/sc-rules/ ※前スレ C言語なら俺に聞け 159 https://mevius.5ch.net/test/read.cgi/tech/1659623547/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
496 名前:デフォルトの名無しさん mailto:sage [2023/02/20(月) 21:19:52.57 ID:I5iz8R+L0.net] >>490 戻りのpopはそれでいいけど呼び出しのpushは処理がぶった切れるから gotoがないとかなりややこしい変換になるよ
497 名前:デフォルトの名無しさん mailto:sage [2023/02/20(月) 23:51:00.80 ID:7qph/rf50.net] >>485 push/pop はルール違反 それに二方向、多方向への再帰はそう簡単じゃないですけどね 二分木の全要素を列挙する非再帰プログラムを書いてください
498 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 00:08:57.34 ID:Cn1Xq+JJ0.net] がんばってgoto無しで作ったりしてたなあ
499 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 06:59:46.53 ID:1n1W4gUgd.net] push/popはルール違反て何それ?
500 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 09:59:11.37 ID:MGN7/c1b0.net] 「俺がルールブックだ」
501 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 10:33:24.95 ID:5S8ZyEUUd.net] 「ウリが蟹飯リッチニダ」
502 名前:デフォルトの名無しさん [2023/02/21(火) 10:51:10.49 ID:NudgdpLh0.net] 豪華な蟹飯が思い浮かんだ
503 名前:デフォルトの名無しさん (スプッッ Sd43-avQ1) mailto:sage [2023/02/21(火) 13:43:23.05 ID:1n1W4gUgd.net] 苫小牧だっけ?
504 名前:デフォルトの名無しさん (アウアウエー Sa13-1XUy) mailto:sage [2023/02/21(火) 16:27:46.36 ID:dWpsoJfPa.net] >>436 >>481 テスト https://ideone.com/iPWHR0
505 名前:デフォルトの名無しさん (ワッチョイ 755f-rVJW) mailto:sage [2023/02/21(火) 16:50:09.17 ID:ncQgkmT30.net] チャットジピティれカ
506 名前:X [] [ここ壊れてます]
507 名前:デフォルトの名無しさん (スププ Sd43-CAVk) mailto:sage [2023/02/21(火) 17:05:45.18 ID:j4WOJdo9d.net] >>499 見事です 私はまだ初級なのでvectorだのcstdioなど見たこともありません
508 名前:デフォルトの名無しさん (スップ Sd43-Tk/Z) mailto:sage [2023/02/21(火) 17:54:02.02 ID:5S8ZyEUUd.net] >>499 お、動いた動いた!
509 名前:デフォルトの名無しさん (ワッチョイ cb63-BTrK) mailto:sage [2023/02/21(火) 17:55:02.20 ID:MGN7/c1b0.net] goto が一つもない・・・
510 名前:デフォルトの名無しさん (アウアウウー Sa49-UkxH) mailto:sage [2023/02/21(火) 19:30:27.79 ID:oAMbgY5Ra.net] goto文は禁じてではないかな? C言語では
511 名前:デフォルトの名無しさん (スプッッ Sd43-avQ1) mailto:sage [2023/02/21(火) 19:48:08.10 ID:1n1W4gUgd.net] 俺様ルールは興味ないから
512 名前:デフォルトの名無しさん (ワッチョイ cb63-BTrK) mailto:sage [2023/02/21(火) 19:50:05.73 ID:MGN7/c1b0.net] CPUレベルまで行くと、GOTOは使いまくりだろう
513 名前:デフォルトの名無しさん (スプッッ Sd43-avQ1) mailto:sage [2023/02/21(火) 19:57:40.07 ID:1n1W4gUgd.net] 機械語1命令ごとにPCを更新するのもgotoかw
514 名前:デフォルトの名無しさん (テテンテンテン MMcb-7AbM) mailto:sage [2023/02/21(火) 20:39:53.11 ID:pHGJPw2cM.net] gotoなんて所詮関数内にしか飛べない 関数が小さければなんて事はない 巨大な関数はgoto以前に悪
515 名前:デフォルトの名無しさん (ワッチョイ cb63-BTrK) mailto:sage [2023/02/21(火) 21:02:34.32 ID:MGN7/c1b0.net] 昔いた現場は、1関数ごとに設計書を何枚も書かされてたな それでみんな、関数の数を極力減らしてた 行き着くところ初期とメインと終了の三つ それぞれが何百行にもなってしまったw
516 名前:デフォルトの名無しさん (ワッチョイ 2379-u8a6) mailto:sage [2023/02/21(火) 22:12:19.48 ID:QJTSRl8U0.net] そういうのいいから
517 名前:デフォルトの名無しさん (ワッチョイ e379-+91A) mailto:sage [2023/02/21(火) 22:59:26.21 ID:fpEKur8e0.net] 硬直化して目的を忘れた「管理」に泣かされたもんだけど それは昭和も今も変わっとらんだろ
518 名前:デフォルトの名無しさん (ワッチョイ cb63-BTrK) mailto:sage [2023/02/21(火) 23:48:29.43 ID:MGN7/c1b0.net] プロジェクト管理はそのうちAIがやるようになるんだろうか
519 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 03:11:04.32 ID:ZjvNTHuW0.net] AI「壊れるまで働け、人間共よ」
520 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 06:39:57.73 ID:6aYkdgkrd.net] >>491 continueを知らないのか?
521 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 15:13:03.32 ID:rwr+6TWF0.net] >>415 やはり構文解析器(プリプロセッサ含む)に手を入れないとデリミタに'は難しそうに思うの 暇だったので>>413 を(ナイーブに) # define b(n) (strint(#n, 1u)) # define t(n) (strint(#n, 2u)) # define o(n) (strint(#n, 3u)) # define x(n) (strint(#n, 4u)) unsigned strint(const char cs[], const unsigned wt){ long d; unsigned u=0; do { // valid digis: ascii '0'..'^' if((d=*cs)<0||d>'_'-'0'+1) continue; u<<=wt, u+=d; } while(*cs++) return u } b('1100'1010'1111'1110) b(1100_1010_1111_1110) o(145;366) x(<:!?>) 全て0xCAFEに等しい、ただし' が奇数個のケース、 b(1100'1010'1111'1110) マクロ引数を区切る,の使用はプリプロセッサがエラー吐く(cc -Eの段階) missing terminating '/" character too much argument etc. (pcc/tcc) ex/m4とか外部ツールでプリプロセスするなら別だけど、c/cプリプロセッサの構文内では不可能に思う(当然リテラルとして自然な仕様拡張も)
522 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 15:22:17.41 ID:mafEi4nvd.net] >>467 アセンブリやいにしえの言語は明示的なdecimal prefixを持ってるね forthだと#123と変種?の&123 #の方がthe (decimal) 123と読めて個人的に好み
523 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 15:23:53.30 ID:mafEi4nvd.net] the (decimal) number 123です
524 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 15:28:02.92 ID:mafEi4nvd.net] 299,792,458と書けたら素敵だけど ds(299,792,458)が引数を区切る,と区別出来ないから無理だね
525 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 16:23:34.63 ID:GDrSYSMbM.net] ほかの言語では、123_456_789の様にアンダーバーで区切るのが多い Cでも出来たと思うけどなぜか'なんだよな… アンダーバーが良かった
526 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 16:41:13.08 ID:3MJ5isf30.net] C++に合わせたんでしょその方が都合がいいだろうし
527 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 16:52:25.15 ID:3MJ5isf30.net] 規格の紹介をしてる>>415 に対してそれは解析器を変えないと難しいとか言ってる>>515 は何なんだ? C23でこうなります、なんだから難しいもクソもないと思うんだが笑
528 名前:デフォルトの名無しさん mailto:sage [2023/02/22(水) 18:12:39.68 ID:/HhOnmf9d.net] 規格を批判してるんだが
529 名前:デフォルトの名無しさん mailto:sage [2023/02/23(木) 02:20:36.04 ID:zOdHjjZs0.net] まだワーキングドラフトだから対応するもしないのも自由だと思うし、c2xはアトリビュート関連くらいしか追ってないが、一応意見を せめて不正なトークンとして弾ける約物にしてほしいな 0b10101011未対応(0cでも何でも)は不正な8進 トークン構成文字0b1010_1011なら不正な型サフィックスとして不正なトークンを報告できるので、ユーザに手直しさせるのも自明 パース状態をトグルする'はEOFまで食うので、エラーが報告されたとしてもcryptic 頻用したと仮定すれば、1/2の確率で釣り合うって字句解析をパスしてしまうのも厄介
530 名前:デフォルトの名無しさん mailto:sage [2023/02/23(木) 04:08:08.64 ID:zOdHjjZs0.net] >>416 俺は16bit程度なら一行で書いてしまうけど、より大きい整数型なら行を分けて書いてるな (u)int64/128_tなんかで二次元データエンコードする時はこんな感じで uint64_t plaid = 0b\ 01010101\ 10101010\ ...\ ; ゲーム盤、行列、画像、畳み込みカーネル、マスク等、重宝する機会は多い pbmそのままだからstatic変数にスクリプトでブチ込むのも楽で非常に重宝 普通(2)/8/10/16のみで任意進数(ビット深度)を指定できないのが歯痒いところ
531 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 15:46:50.99 ID:2A7WVGnna.net] C++におけるユーザー定義の接尾辞で _数字 みたいな奴を許可していなかったら桁区切り文字はアンダースコアになってた
532 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 07:07:10.46 ID:Gr0Cvu5K0.net] だな
533 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 07:37:36.32 ID:oQAKiXWbd.net] 自己参照構造体を、テキストのコードが難しくて理解できない
534 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 07:49:42.99 ID:ymHOkbuH0.net] >>525 まさか4567_8(→4567 of type "8")? 珍妙な…
535 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 07:58:07.27 ID:ymHOkbuH0.net] extern "C"で混ぜるにはもう違いが多過ぎるし、c++と足並み揃えるのやめればいいのに
536 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 08:42:57.62 ID:Gr0Cvu5K0.net] C++が流行りだした当時のCの財産を捨てずに済むってだけの話で これから新しく作るものの足かせになるのは本末転倒だよな
537 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 12:16:51.44 ID:0OyaNSrI0.net] C言語で構造体の双方リンク理解する前にテキストエディタ作るようなことあったら 激重エディタつくってただろうなぁと経験してもないことを妄想。 1文字挿入→その後ろの文章を全部コピーでずらして・・・
538 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 18:12:24.76 ID:zCQzTRZzM.net] >>531 emacs なんかは1文字挿入のたびに後ろ全部コピーしなくても良いようにギャップバッファという手法を使っていた
539 名前:デフォルトの名無しさん mailto:sage [2023/02/26(日) 18:34:27.49 ID:akN/HRard.net] >>532 emacs! Esc x compile に何度も助けられた 一人で五万行くらいのコードを書いてたからな ヘッダーファイルだけで50くらいあった
540 名前:デフォルトの名無しさん (テテンテンテン MM0e-CSgJ) mailto:sage [2023/02/26(日) 20:20:17.76 ID:Qgs0XTsDM.net] >>532 過去形だけど今もだぞw ギャップバッファは、最近流行りの複数カーソル使って離れた複数箇所を一気に編集すると、大量にコピーが発生して重くなる可能性がある なのでこれからテキストエディタを実装するには、Piece Tableを使う方がいいと思われる
541 名前:デフォルトの名無しさん (ワッチョイ 76cf-okFi) mailto:sage [2023/02/26(日) 20:22:02.57 ID:OdlyZwjm0.net] Slackware+JEに入ってたMuleを3年くらい使ってたけど別のエディタに移っちゃったな 悪くないと思うんだけど時代に合ってないというか、貧相な環境の方が使い出があるエディタだったな
542 名前:デフォルトの名無しさん (テテンテンテン MM0e-CSgJ) mailto:sage [2023/02/26(日) 20:31:33.93 ID:Qgs0XTsDM.net] EmacsとかVimを貧相と思うのは、端末内で動かせるようになってるからだ GUIはオマケみたいな扱いだ でも、それはそれで存在意義はある
543 名前:デフォルトの名無しさん (ワッチョイ da79-Arif) mailto:sage [2023/02/26(日) 20:37:35.64 ID:gahU4Yv80.net] viは来世紀にも残ってそうだから最初に覚えたなあ eなんとかはデベロッパーのオナニーが透けて見えて気持ち悪すぎた
544 名前:デフォルトの名無しさん (ワッチョイ 7663-W5vA) mailto:sage [2023/02/26(日) 21:16:43.25 ID:fbmwPkIL0.net] viの様にコマンド覚えなくても使えたから便利だったぞ
545 名前:デフォルトの名無しさん (ワッチョイ 76cf-okFi) mailto:sage [2023/02/26(日) 22:04:54.83 ID:OdlyZwjm0.net] >>536 ちゃう、Emacsを貧相だと思ってるんじゃなくて計算機資源が豊かでない環境の方が使い出があるって言ってるんだよ
546 名前:デフォルトの名無しさん (ワッチョイ 7db3-sBbk) mailto:sage [2023/02/26(日) 22:36:28.47 ID:0m6hfJUV0.net] 最初に使い込んだエディタの話? 俺はVZだったな
547 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 04:08:09.05 ID:naBje3l2d.net] スレちがいだし わりとしょうもないレベルの自慢話になってることを警告しておくぞ
548 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 07:30:50.50 ID:U2h1s9M4d.net] ダム端末使ってた頃はviが有り難かったけど 今となっては当時慣らした人はともかく 若いやつにお奨めするもんじゃない と俺は思うな
549 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 09:43:18.06 ID:jlyK/+pC0.net] >>531 素のCだと何もないからデータ型を一つ一つ自分で理解していけていいという意味? 例えばC++ならlistがあるから理解しないままになる? でもlistとvectorの違いを知らなければ結局
550 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 12:21:44.99 ID:3zla3lE+0.net] >543 Cやる前はアセンブラだったからねぇ。アセンブラでの処理方法をそのままC言語に持ち込んでた。 当時はでっかく領域確保したらその領域で全部処理するって思考しか無かった(自動変数って概念も無し)。
551 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 12:29:45.17 ID:U2h1s9M4d.net] ダミーセクションは使ってたけどね
552 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 17:11:48.94 ID:3MgFEhuya.net] >>543 そこはdequeですよ常考
553 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 10:24:33.59 ID:7/0mM3ia0.net] >>544 >自動変数って概念も無し 自分はデバッグでディスアセンブルを読むぐらいしか用事がないんだけど、 ゼロからアセンブリを書く場合はスタックの操作で領域管理したりはしないと?
554 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 10:32:54.86 ID:7/0mM3ia0.net] >>546 listやvectorはほとんど使わない感じ?
555 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 12:10:45.99 ID:dNNgH11Kd.net] スタックはレジスタのバックアップが主な用途で メモリ変数はグローバルがデフォだった だから変数表を作ってた
556 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 16:07:40.92 ID:Ki6W+L2N0.net] あの 先頭に戻って検索 するかどうかを維持する変数名ってどんなのがいい?
557 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 16:44:22.88 ID:295BsPXb0.net] >スタックの操作で領域管理 8086系だとスタックレジスタ直接使うと遅いんじゃなかったっけ? MOV AX、[SP+10] とかやるより MOV AX、[TEMP] ... TEMP: DW 0000h ってやる方が速いとか。 BASIC時代のマシン語CALL時のレジスタエリアは16バイトってトラウマが・・・。
558 名前:デフォルトの名無しさん [2023/02/28(火) 21:38:56.96 ID:EshvOxGGa.net] ダミーセクションって、IBMのメインフレームのアセンブリ言語の DSECTですか?
559 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 21:47:36.63 ID:svcsEAcG0.net] うん
560 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 20:42:10.06 ID:fErXdR4ud.net] >>550 auto_reverse 絶対これにしなさい
561 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 23:36:37.44 ID:5C60qBo90.net] >>550 cyclic
562 名前:はちみつ餃子 mailto:sage [2023/03/02(木) 00:05:39.48 ID:pZfd6NSK0.net] そういうのはいわゆる自転車小屋の議論になりがち。 そこそこ盛り上がりはすることもあるかもしれないけどあまり意味のある結論は出ないよ。
563 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 03:04:30.24 ID:eGjuMjwU0.net] するか否か、1ビットのフラグの命名に他者を巻き込む議論が本当に必要ですかということか すなわち名前はflagとかで変数宣言部に日本語コメントでも添えた方が建設的ということだな?違うか?
564 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 07:06:54.36 ID:xa7MSIOTd.net] 変数名の付け方は案件による 無論、一般論などない 主観と思い込みで強弁するやつはいるけどね
565 名前:デフォルトの名無しさん [2023/03/02(木) 09:03:08.54 ID:GoAAqo+J0.net] C-gengo wa mada nihon-go kakenai no? bool 先頭に戻って検索 = 真 ;
566 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 16:32:03.69 ID:N0PfEOQ90.net] 質問の仕方でどういうコード書いてるか垣間見えるのはあるな int searchtype = FROM_TOPとかBOTTOMとかBACKWARDみたいな持ち方ならそんな質問出ないだろうし
567 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 17:21:24.58 ID:y83mRLNqd.net] >>551 どのCPUでもダイレクト指定が速いに決まっとりまんがな レジスタ相対はレジスタにディスプレースメントを加算してからアドレス出力するんだから
568 名前:はちみつ餃子 mailto:sage [2023/03/03(金) 01:19:24.14 ID:5ZXS0iFm0.net] >>561 個々の命令の速度で考えればその通りだが今どきの CPU だと パイプラインに隠れて差が出ない (差があっても観測不能なほどの極小) ってことも普通にあるんじゃないの?
569 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 08:02:43.32 ID:an7QtCXRd.net] 1Hzぐらいの速度で計測すれば何かわかるかもしれない
570 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 08:14:12.93 ID:jW6Dg0m70.net] 1Hzだと速度的には1秒周期なので測定の意味がない
571 名前:デフォルトの名無しさん (ワッチョイ 7663-W5vA) mailto:sage [2023/03/03(金) 22:40:53.27 ID:1TAJ9GtV0.net] もしかするとCPUクロックをそこまで落としてデバッグしたいとかw
572 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 06:01:07.88 ID:2lfmGWRw0.net] [sp+10]はメモリアクセス1回だが [temp]は2回だな 8086だとキャッシュないからメモリのウエイト数の影響をモロに受ける どciscでパイプラインなんかないし
573 名前:デフォルトの名無しさん (スッププ Sd33-0t2P) mailto:sage [2023/03/04(土) 19:01:51.83 ID:siYz8HOgd.net] Cのコードを書くのにアセンブラまで意識するのか、、 立派な心がけあるな 精進しなされ でも、CPUやコンバイラで違うじゃん、、、
574 名前:デフォルトの名無しさん [2023/03/04(土) 21:31:31.02 ID:mhQJa69K0.net] >>566 勘違いしてない?
575 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 21:33:37.98 ID:K3zEUrJN0.net] [sp+10]が1回なら[temp]も1回じゃね 命令のフェッチは数えないんでしょ? プリフェッチはパイプラインみたいなもんじゃね?
576 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 23:58:44.62 ID:D8X7oasM0.net] 素の8086にsp使えるアドレッシングはないのでbpで… mov ax, [bp+disp] 命令3~4バイト 8+9クロック mov ax, [TEMP] 命令4バイト 8+6クロック と実効アドレスの計算時間に差があったという大昔のお話
577 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 06:15:37.72 ID:nSao/Dea0.net] >>568 何が?
578 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 06:58:01.26 ID:94fNx05VM.net] 8086には現在のような深いパイプラインは無いがそれでもEU(Execution Unit : 実行ユニット)とBIU(Bus Interface Unit : バスインタフェースユニット)は独立しており メモリアクセスと内部のALUはそれぞれ別々に動作する ある意味初歩的な2段パイプラインとも言える構造で単純なクロックサイクルの加算とはならない
579 名前:デフォルトの名無しさん [2023/03/05(日) 07:13:34.61 ID:cmZGkkdl0.net] >>571 >[temp]は2回だな なぜ2回?
580 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 08:11:12.86 ID:nSao/Dea0.net] >>573 temp: dw 0000h つまりtempはメモリに置かれている tempのREADで1回、 []によるインダイレクトでもう1回 だろ
581 名前:デフォルトの名無しさん (ワッチョイ 13ad-NCuH) mailto:sage [2023/03/05(日) 12:43:47.21 ID:nmaj3sub0.net] >>567 昔昔はそういうものだったんよ。 Cは、 ・プログラマの責任において何でもできる ・コンパイラはプログラマの意思に忠実であれ(余計な最適化なんかするんじゃねえ!) ってこと。だから、 a=a+1;と、a++;は違う。 前者は加算命令、後者はインクリメント命令になってほしいというのが、プログラマの意志。 ただ、Cが色々な場で広く使われるようになって、最適化を進めるしかなくなったから、そんなのどうでもいいことになったけど。
582 名前:デフォルトの名無しさん (ワッチョイ 1969-zdzo) mailto:sage [2023/03/05(日) 12:47:05.12 ID:s1YdjeUN0.net] >>574 だからさ……それを2回っていうなら、[sp+10]も2回だろ
583 名前:デフォルトの名無しさん (ワッチョイ d163-PMd1) mailto:sage [2023/03/05(日) 13:30:59.36 ID:nSao/Dea0.net] >>576 何で? 即値はフェッチ時点で取り込まれているのに
584 名前:デフォルトの名無しさん (ワッチョイ 1969-zdzo) mailto:sage [2023/03/05(日) 15:05:57.71 ID:s1YdjeUN0.net] >>577 tempもtemp自体は即値だよ [sp+10]と[temp]の違いはレジスタ相対かどうかだけ
585 名前:デフォルトの名無しさん (ワッチョイ 13ad-Qpn1) [2023/03/05(日) 15:07:29.13 ID:YlwUczDE0.net] >>575 ま、しかし、昔はコンパイラの最適化がしょぼかったというのもあるな。 CPU (特に 8 bit CPU とか) がC言語等のいわゆる高級言語を全く意識して作られていないというのが最大の問題だったのかも知れないが。
586 名前:デフォルトの名無しさん (ワッチョイ d163-PMd1) mailto:sage [2023/03/05(日) 15:41:40.37 ID:nSao/Dea0.net] >>578 DWディレクティブで定義してるんだからリテラルの類だよ 命令コードと一緒にフェッチされる即値とは根本的に違う
587 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 16:48:35.64 ID:0aHQQO/od.net] >>577 CPU仕様によるが 68000では8ビット範囲以内のディスプレースメントは命令中に含まれてたが 8086はどうだっけ…
588 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 17:03:05.50 ID:nSao/Dea0.net] >>581 いやここはCPU仕様には関係ないぞ 68kにしたってdc.lディレクティブで置いた定数はディスプレースメントじゃないし
589 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 17:27:59.49 ID:0aHQQO/od.net] 間違い、>>581 は6809の話だった… ややこしくなってるが MOV AX、[SP+10] がspレジスタから10バイト後を読むなら MOV AX、[TEMP] はアドレスTEMPを読む意味だろ 8086ニーモニックをよく知らないが
590 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 17:44:11.51 ID:nSao/Dea0.net] >>583 6809にしたってFDBディレクティブで置いた定数はディスプレースメントじゃないし
591 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 18:29:27.81 ID:On/jxRV/0.net] #include <stdio.h> #include <math.h> void main(void){ double a, b, c; double x1; a = 4; b = -3; c = 1; x1 = (-b + sqrt(pow(b,2) - 4*a*c)) / (2 * a); printf("%f\n", x1); } printfが-nanて表示します。これはどういう意味でしょうか?
592 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 18:43:57.85 ID:KnQWIUK4d.net] >>585 コンバイラかて人間や こんなつまらん二次方程式の解をなんぞ解きたくない そう言う意思表示や
593 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 18:53:30.15 ID:M62PQQGq0.net] >>585 printf("(%f)\n",pow(b,2) - 4*a*c);
594 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 19:03:21.29 ID:On/jxRV/0.net] あー、なんかわかってきました そういうことか サンクス
595 名前:はちみつ餃子 mailto:sage [2023/03/05(日) 19:07:20.35 ID:AE3nXsIn0.net] >>585 sqrt に負数を渡した場合には定義域エラーとなり、定義域エラーのときは処理系定義の値を返す。 その処理系では処理系定義の値というのが nan だということになる。 言語仕様では詳細は規定されていないけれど 一般に浮動小数点の表現として使われる IEEE 754 などでは非数 (not a number) を表現のひとつとして持ち、 意味のある計算結果にならなかったときは非数がセットされる。 not a number の略で NaN 。 処理系によっては定義域エラーをハンドリングする方法を用意してあることもあるけど、 発生させないように事前にチェックしたほうが基本的には簡単だと思う。
596 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 19:21:09.18 ID:0aHQQO/od.net] よくわからないんだが >>574 が勘違いだな TEMP: dw 0000h はデータ0000hをメモリに置いてそのアドレスをTEMPと定義するという命令(アセンブラ疑似命令) MOV AX,TEMP はAXレジスタにそのアドレス値を入れる MOV AX,[TEMP] はAXレジスタにそのアドレスの内容(0000H)を入れる さらに[0000H]の内容を読むにはもう1命令必要になる…はず 6809なら1命令で読めるがあまり使われなかったと思うどっちにしろ遅くなるので