- 1 名前:デフォルトの名無しさん [2012/03/15(木) 13:41:40.36 ]
- C言語の入門者向け解説スレッドです。
★前スレ C言語なら俺に聞け(入門編)Part 97 toro.2ch.net/test/read.cgi/tech/1330177298/ C言語なら俺に聞け(入門編)Part 97 toro.2ch.net/test/read.cgi/tech/1329161329/ ★過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000 ★教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題片付けます 156代目 toro.2ch.net/test/read.cgi/tech/1328276597/ ★C++言語については避けてください。C++対応明記スレへどうぞ ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 長くなりそうなコードはcodepadに貼り付けてもいいでしょう codepad.org/
- 596 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 23:23:40.75 ]
- >>594
それは20年以上前の話だな。
- 597 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 23:38:58.95 ]
- ドラゴンブックもってるお
- 598 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 23:39:51.91 ]
- >>590
おめ 楽しそうだな 俺も久しぶりに楽しくプログラミングする時間をとろう・・・
- 599 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 23:50:11.61 ]
- >>596
ユーザーSEはリモートでぬくぬくかもしれんがベンダーは携帯OFFにしてサーバー室で作業なんだぞ
- 600 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 23:50:22.04 ]
- プログラムしないのに、こんなスレに張り付いてるやつもおるのか…
本来マ板行くべき奴なのかな?
- 601 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 00:05:33.91 ]
- レス乞食だろ
馴れ合い板あたりがお似合いだ
- 602 名前:デフォルトの名無しさん [2012/03/22(木) 00:13:23.41 ]
- チョンとかヘボが?
- 603 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 00:30:26.55 ]
- プログラムしないやつがいる?
- 604 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 00:31:42.67 ]
- プログラムしないあるよ
- 605 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 00:32:25.78 ]
- >>593
それ速攻で変えるわ
- 606 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 01:27:07.72 ]
- うひょー
- 607 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 01:40:30.98 ]
- >>592
JKは素人だろ普通
- 608 名前:デフォルトの名無しさん [2012/03/22(木) 01:42:06.59 ]
- 超絶つまんね。
- 609 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 02:50:54.41 ]
- すいません。最近プログラミングの勉強を始めてどうしても聞きたい事があるんですけどいいですか?
- 610 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 02:53:05.30 ]
- だめです
- 611 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 02:57:08.23 ]
- 確認なんてせずに聞けばいい。
ただ、どうもスレ違いだとレスをすることになる気はしている
- 612 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 03:00:42.80 ]
- いえ、理論ってか概念みたいなんすけど、もし、優れた演算能力、優れた五感能力、文法とか、無茶クチャ知ってて
- 613 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 03:04:02.68 ]
- 色んな言語を知ってて、機械語でゲームが見えるどうなるんすか?
- 614 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 03:05:34.53 ]
- あ、そんな人が居たらです。
- 615 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 03:05:34.50 ]
- おなかが減ります。
- 616 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 03:07:15.19 ]
- お願いします。これだけはマジレスしてくれません?wikiで知ってゲーム作りたくて、お願いします。
- 617 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 03:07:57.70 ]
- オナニーがやめられなくなります。
- 618 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 03:08:08.73 ]
- ゲームは機械語では見えません
- 619 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 03:39:06.24 ]
- そもそも機械語以前に日本語を理解してください
それと機械語と言っている時点でスレチです。
- 620 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 03:40:05.36 ]
- Windowsの場合user32.dllって実行時に読み込まれるんだっけ?
- 621 名前:デフォルトの名無しさん [2012/03/22(木) 03:41:54.71 ]
- なんのこっちゃ。
- 622 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 03:49:49.13 ]
- ないはず
- 623 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 04:57:18.47 ]
- ん?ダイナミックリンクなんだから実行時だと思うけど違うのか?
- 624 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 05:34:45.72 ]
- >>622
はずとは何故ですか?
- 625 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 05:38:21.54 ]
- いや知りたいだけなんですよ。
- 626 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 05:43:19.12 ]
- まぁいいや。自分で考えますわ。
- 627 名前:デフォルトの名無しさん [2012/03/22(木) 07:08:18.08 ]
- おい
途中から俺じゃないがやつが俺になってるぞ
- 628 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 09:13:44.13 ]
- 俺俺、俺だよ。
- 629 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/22(木) 14:36:38.98 ]
- >>620
プロセスが生成されたときにシステム DLL もそのアドレス空間にマッピングされて リンク (インポートアドレステーブルの書き換え) するけど、 読み込み自体は起動時じゃねーの
- 630 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 15:59:11.71 ]
- 必殺はみちつマジレス
- 631 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 16:00:04.89 ]
- >>627
ム板ではよくあること
- 632 名前:デフォルトの名無しさん [2012/03/22(木) 16:01:30.08 ]
- プセロスが生成さたれときにシテスム DLL もそのアレドス空間にマッンピグされて
リンク (イポンートアレドステブールの書換きえ) すけるど、 読込みみ自体は起動時じねゃーの
- 633 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 16:02:52.92 ]
- プセロスが生成さたれときにシテスム DLL もそのアレドス空間にマッンピグされて
リンク (イポンートアレドステブールの書換きえ) すけるど、 読みみみ自体は起動時じねゃーの
- 634 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/22(木) 16:56:05.82 ]
- 読込みみって何だよ
頼むからそういうのはお前の脳内だけで勘弁
- 635 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 17:35:35.20 ]
- はみちつ後ろー
- 636 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 17:59:26.79 ]
- 最初と最後だけあってれば意外と読めるもんでしょ、みたいなコピペがあるじゃん。
- 637 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 18:03:06.63 ]
- volatile指定子は誰得なんですか。使ったことある人いませんか?
- 638 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 18:09:03.58 ]
- ぱぷー
- 639 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 18:10:07.57 ]
- 周辺機器のレジスタとかポートにマッピングされてるとか、別のスレッドも触るとか、
そういうのは最適化せずに必要なときにちゃんと現地から値をお取り寄せする必要がある。
- 640 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 18:15:10.60 ]
- DMAとかでCPU以外が書き換えちゃう場合とかね
- 641 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 18:38:27.36 ]
- いろいろあるんだよ
- 642 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 22:15:26.29 ]
- >>637 組み込みではよく使う。
たとえばグローバル変数で、メインルーチンと割り込みで参照、変更される ものがあるとき付ける。 付けないと最適化でその変数の外部での変更がが無視されてif文が無視されたりする。
- 643 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 22:38:11.58 ]
- >>637
インラインアセンブラの時に使った。
- 644 名前:637 mailto:sage [2012/03/22(木) 23:20:54.77 ]
- 要は最適化で変数がハブられるのを防止するという事なんですね
俺にもvolatileを付けてほしいです
- 645 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:52:30.95 ]
- 昔はregisterの逆と教わったな。今はregisterなんて使わないけど。
- 646 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/22(木) 23:54:43.90 ]
- レジスタに割り当てられないというだけではメモリに割り当てられるとは限らないよな。
- 647 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:00:52.81 ]
- >>637
マルチスレッドとか、割込処理とか、メイン処理と別の流れで書き換えられるような変数につける。 ある処理の中では、絶対に値が書き換わらない様な変数が、書き変わっているかもしれないから、 都度ちゃんと中身をみてね、ってこと。 例えると、 自分しか書き込まないノートは、自分が書き換えないなら、絶対に前の状態から変わっていないから、 自分が書き込んだ内容が読み出せると期待して、いちいちノートを見なくてもいい。 だけど、他の誰かが書き込めるノートは、自分が書き込んだ後に、書き変わっているかも しれないから、その都度、確認する必要がある。 この自分以外の誰かが書き換えることがあるよ、っていう印がvolatile。 マルチスレッドや、割り込み処理を扱うようになると、使用する必要が出てくる。
- 648 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:05:39.26 ]
- >>646
メモリかどうかは知らんけど 「絶対にどっからでもアクセスできるとこ」 ってのを保証してるわけだし、まあ十中八九メモリだろ、多分。
- 649 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:06:47.06 ]
- >>644
dic.yahoo.co.jp/dsearch/1/1na/078908000/ これでもvolatileつけたいか?
- 650 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:07:33.14 ]
- >>645
適当すぎ registerとvolatile両方付いてる場合、どうすんだよ
- 651 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:12:11.30 ]
- 陽気な>>637
いいじゃん、と無理やりプラス思考で。
- 652 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:18:20.87 ]
- みかか
- 653 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:26:45.05 ]
- >>650
ノリの話であって厳密な定義としてそう教わったわけじゃないよ。 わかるだろ? で、register と volatile が両方ついてたら何が起こるのか教えてくれよ。
- 654 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:33:20.18 ]
- 使わなくてすむならそれでいいじゃん
問題が起きてから考えろよ
- 655 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:45:58.59 ]
- >>653
コンパイラ次第。 まぁ普通はregisterはあってもなくても同じだろうな。
- 656 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:53:14.27 ]
- registerは単なるヒントだけど、volatileはそうじゃないよね?
- 657 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:56:09.10 ]
- そうじゃないけど?
- 658 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:56:47.56 ]
- だからコンパイラ次第ではなくて、volatileが生きるんじゃないの?
- 659 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:57:08.04 ]
- 誰が死ぬなんて言ったんだ?
- 660 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 01:01:05.50 ]
- すみません、失礼します。
ダイテル親子の「C言語プログラミング」という本で今、 迷路を作成して、脱出経路を表示する問題をやっています。 迷路作成はうまくいったのですが、脱出経路の見つけ方がわかりません。 いわゆる「右手で右側の壁をなぞりながら進めば出口にたどり着ける」 というアルゴリズムなのですが・・・、入口から一歩も動かない始末です。 何かアドバイスやポイント等いただけると、助かります。
- 661 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 01:07:07.54 ]
- スレチだがまぁ答えてやるか
ぱっとおもいついたのが再帰関数を利用する方法で 書記位置の右の方向に移動できるかをチェック 次にできなかった場合に方向を90°変更してそこが通れるかのチェック 通れる場合は進む 通れない場合は再帰関数でチェックする っていう方法でいけるんじゃね?>
- 662 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 01:07:29.59 ]
- まずは自分が迷路の中に入ったつもりでそのアルゴリズムにしたがって歩いてみなよ。
- 663 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 01:08:05.82 ]
- 入り口の背中を塞げばおk
- 664 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 01:11:21.63 ]
- まぁ正直経路探索するならブレッドクラムかA*がいいんじゃね?
- 665 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 01:13:47.52 ]
- 右手沿いはメモリ確保とかいらないし次の状態遷移が確定してるので入門向け
- 666 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 01:23:22.17 ]
- 誤魔化せてよかったな。
- 667 名前: ◆QZaw55cn4c mailto:sage [2012/03/23(金) 01:29:25.97 ]
- >>660
hibari.2ch.net/test/read.cgi/tech/1311089619/847 ideone.com/64tHG
- 668 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 10:28:42.28 ]
- バグってんじゃん
- 669 名前: ◆QZaw55cn4c mailto:sage [2012/03/23(金) 12:30:55.72 ]
- >>668
それはどこでしょうか? 上記 ideone.com/64tHG の "#2 show" をクリックしていただければ、一応、迷路の作成と出口探索結果を表示します。
- 670 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 13:45:00.25 ]
- マルチスレッドはvolatileじゃダメ
キャッシュコヒーレンシ的にメモリバリアとかしないとダメ
- 671 名前:デフォルトの名無しさん [2012/03/23(金) 14:00:39.41 ]
- うそつけカス
- 672 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 14:09:54.37 ]
- >>670
kwsk
- 673 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 14:12:41.95 ]
- アトミックな操作にするのと
最適化で読み込みタイミングが移動したり省略されたりするのと 別の話なんじゃないの?
- 674 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 14:15:35.37 ]
- volatile registerと言えば、z80のリフレッシュレジスタなんかが該当するな。
でも、直接割り当てられるわけじゃないから何らかのコンパイラ側の支援が必要だけど。
- 675 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 14:20:02.28 ]
- >>674
お前はアホ。
- 676 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 14:28:52.70 ]
- lmgtfy.com/?q=volatile+%E3%83%9E%E3%83%AB%E3%83%81%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89
javaとは違うのよ
- 677 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 14:33:54.46 ]
- javaと同じとか、勘違いしてるだけだろ。
- 678 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 14:56:25.96 ]
- ラミミ
- 679 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/23(金) 16:07:04.59 ]
- >>672
あるオブジェクトが1命令で書き換えできるとは限らない。 だから書き換えの途中でスレッド切り替えが入るとグダグダになる。 あるいは CPU が効率化のために命令を実行する順序を入れ替えることがある。 (アウト・オブ・オーダー) そんなこんなで複数のスレッドからアクセスされるオブジェクトってのは面倒なことが色々あるんだよ。 だから確実にメモリを参照するようにってだけでは駄目。 そのへんの条件を制限するような仕組が要る。 それがメモリバリア
- 680 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 16:11:57.29 ]
- で、メモリバリアが保証されてるAPIとか何かあるのか?
- 681 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 16:35:17.37 ]
- Win32:Base InterlockedIncrement ?
- 682 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 16:45:48.98 ]
- メモリババアに見えた
- 683 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 16:52:23.30 ]
- 割り込み禁止しといたら?
- 684 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 16:58:58.48 ]
- ノンプリプリエンプション
- 685 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 17:01:07.92 ]
- 知ってる単語並べりゃいいってもんじゃない。
- 686 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 17:03:12.44 ]
- 普通に排他制御すればいいんじゃないの?
- 687 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/23(金) 17:56:13.62 ]
- >>680
アーキテクチャに依存する話なので言語レベルで規格化されてはない。 C++0x では議論してた (バリアではなくフェンスという名前になってた) けど、 最終的に盛り込まれたのかどうかまでは知らん。 >>686 より速度が要るところだとかではいちいちロックしたくないとかあるんだよ。
- 688 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:04:16.53 ]
- 一般的には環境が提供するmutex等の同期プリミティブ使えば大丈夫
VC2005以降でWindows上ならvolatileでいいみたい? msdn.microsoft.com/ja-jp/library/bb310595(v=vs.85).aspx
- 689 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:07:11.75 ]
- >>687
Cスレなんだけど。
- 690 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:08:48.93 ]
- そら、コアな部分でそういう要求がある事はわかるけど、
入門スレでvolatileは誰得なの?っていう話で 一気にそこまで語らないといけないもんなの?
- 691 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:09:54.38 ]
- ていうのは>>687の
>>686 より速度が要るところだとかではいちいちロックしたくないとかあるんだよ。 に対して。
- 692 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:48:56.43 ]
- >>691
実際ロックせずにすむのかっていうところが俺わからんのだけど メモリバリア使えばアトミックになることが保証されるもんなの?
- 693 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 18:52:21.11 ]
- メモリバリアってgcc特有の言い方じゃあ
archによってはatomicな関数が使えるようになってる
- 694 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 19:01:29.50 ]
- 関数レベルでアトミックにするような属性かなんかがあるってことなんだろか。
でもさすがにそれは大掛かりすぎるから違うか。必要なとこだけロックするほうがいいよね
- 695 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 19:05:34.61 ]
- 排他処理の意味、わかって書いてる?
- 696 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 19:58:11.85 ]
- 信じられないくらい大量のうんこが出たんだ…
って言ったら信じる?
|

|