1 名前:デフォルトの名無しさん [2012/07/15(日) 10:28:33.18 ] C言語の入門者向け解説スレッドです。 ★前スレ C言語なら俺に聞け(入門編)Part 103 toro.2ch.net/test/read.cgi/tech/1341059858/ ★過去スレ 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++の宿題片付けます 158代目 toro.2ch.net/test/read.cgi/tech/1339338438/ ★C++言語については避けてください。C++対応明記スレへどうぞ。 ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。 # サイズが大きい場合はアップローダ等を利用してください。 codepad.org/ ideone.com/ ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
844 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 22:05:21.58 ] あれは猫ならわかるのかもしれんが、人間だとわからんのでは? 少なくとも俺は柴田望洋のほうがわかり易かったよ
845 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 22:05:48.79 ] うん
846 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 22:39:17.97 ] 独習Cだろ最強は
847 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 22:58:50.44 ] 図書館で借りた入門書に誤字があり、その箇所で悩みまくり頭が沸騰するかと思った。 初心者だから自分が間違っているのか本が間違っているのか分からないから困る
848 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 23:13:11.49 ] 困るね
849 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 00:00:44.45 ] 読んで覚えるだけの勉強しかしないバカにありがちだね
850 名前:デフォルトの名無しさん [2012/08/05(日) 00:03:30.81 ] ∧_∧ / ̄ ̄ ̄ ̄ ̄ ( ´∀`)< オマエモナー ( ) \_____ │ │ │ (__)_)
851 名前:685 mailto:sage [2012/08/05(日) 01:58:36.19 ] >>847 自分でうごかしてみるんだ。今は環境は簡単に手に入る。
852 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 04:42:27.49 ] コンパイル環境あったところで、誤字が理由のエラーに悩みまくることはかわらないけどな
853 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 04:45:35.54 ] 昔よりはエラーメッセージが親切になった 何といっても読めば意味が分かることが多い
854 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 04:57:34.33 ] 開発環境やバージョンの違いで動かないこともあったりするから 手に負えない。
855 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 05:05:20.29 ] 初心者がエラーメッセージをちゃんと読んで理解するかよw
856 名前:685 mailto:sage [2012/08/05(日) 05:24:21.33 ] >>855 ここに投げてみるとか、codepad/ideone の結果を貼り付けてみるとか。 初学者のはまる点であれば、ここでなんとかなるんじゃない?
857 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 05:35:40.54 ] >>639 >>643
858 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 06:09:52.40 ] しかし初心者ほど「エラーが出ます」としか言わないのであった
859 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 06:33:42.02 ] C++のテンプレートとかエラーメッセージ自体が意味不明だったりするけど
860 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 06:34:54.30 ] 初心者の独学の話をしてるんじゃないの?
861 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 06:36:02.61 ] ttp://ideone.com/XY4SB 初心者によくありがちなコンパイルエラー
862 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 07:34:32.47 ] >>861 ねぇよ
863 名前: ◆QZaw55cn4c mailto:sage [2012/08/05(日) 09:45:29.15 ] >>857 これは痛いところを突かれましたね。 確かにcodepad.org/mDg8Dx8P は今でも説明不能。 手元のgcc4 は 0. 000000 を表示することから >>653 + double拡張が妥当ではあるのですが、 それじゃcodepad はどんなことになっているのか?
864 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 10:13:57.76 ] %fで8バイト必要なのに4バイトしか積んでないから つまり>>663 の4番目と6番目
865 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 10:24:52.91 ] % よりも - の方が優先順位が高いので 10 % 3 - 1.0 < 4.0 ? 1 : 0; は 10 % (3 - 1.0) < 4.0 ? 1 : 0; と解釈され、剰余演算子にdouble型を適用しようとするので コンパイルエラーになるはずなんだけどなあ
866 名前: ◆QZaw55cn4c mailto:sage [2012/08/05(日) 10:41:02.47 ] >>864 なるほど、いったんスタックをお掃除すると結果がかわるというわけですね。 >663 を codepad にかけてみました。 codepad.org/HIVDpg5z 1番目の結果を出すとき、ゴミはいったいなんなんだ?
867 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 10:48:07.87 ] >% よりも - の方が優先順位が高いので 単項演算子の-と二項演算子の-との区別がつかないおバカさん?
868 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 10:56:01.96 ] printf("%f\n", 10 % 3 - 1.0 < 4.0 ? 1.0 : 0.0); とするとちゃんと1.000000と表示される所から見て、整数→倍精度浮動小数点数 への格上げはされてない(当たり前か)
869 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 11:22:28.30 ] ttp://ideone.com/asu0T printf()を連続で呼ぶと前の引数が残るからアクロバティックなコーディングが出来る やらないけど
870 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 11:27:22.05 ] >>866 ttp://codepad.org/tqrPGZ55
871 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 11:33:13.47 ] >>869 これアクロバティックと言わずに「undefined」と言おうよ >>870 intでdouble型の表示をしようとすると結果はやはり「undefined」だろうな printf("%f\n", 1); とやってるのと同じだもん
872 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 11:51:59.18 ] そういえばDOSの時代に関数ポインタを取得して、そこにディスク上から別の関数を 上書きして走らせるというキチガイ沙汰なプログラムが立派に商用に使われていたな もちろん後から上書きする関数の大きさは前の関数よりもサイズが小さくないと 次の関数の頭まで消してしまうし、引数も同じにしとかないとコンパイルが出来ない これも未定義なんだけど、メモリの少ない時代は仕方がなかったんだろうな
873 名前:デフォルトの名無しさん [2012/08/05(日) 11:54:53.01 ] union { char c[8]; double d; } u; u.c[0] = 0x66; u.c[1] = 0x68; u.c[2] = 0x3c; u.c[3] = 0x11; u.c[4] = 0xc4; u.c[5] = 0x59; u.c[6] = 0x01; u.c[7] = 0x40; printf("%f\n", u.d); u.c[0] = 0x00; u.c[1] = 0x00; u.c[2] = 0x00; u.c[3] = 0x00; printf("%f\n", u.d);
874 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 11:58:44.74 ] >>872 メモリの無い時代、別にオーバーレイは常套手段だったろ。
875 名前: ◆QZaw55cn4c mailto:sage [2012/08/05(日) 12:35:11.54 ] >>870 おおー、thx このやりかた、デバッグにつかえるかもしれないね
876 名前:デフォルトの名無しさん [2012/08/05(日) 12:36:40.22 ] 条件A, B, Cそれぞれにture falseがあり、条件の組み合わせで それぞれに違う処理をさせたい場合、どういった書き方をするんでしょうか 真理値表で言うとこんな感じです A B C F F F -> n = ture F F T -> m = ture F T F -> l = true <略> T T T -> s = true ifを使って、 if (a == false) && (b == false) && (c == false) { ... などと書くのが普通でしょうか。コレだと条件がD, E, ...と増えていくと 収集がつかなくなりそうで不安です。いい方法か、検索に役立つキーワードが あれば教えて下さい。
877 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 12:43:11.67 ] ビットフラグ
878 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 13:13:19.18 ] 関数型言語ってCの事ですか?
879 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 13:18:05.02 ] Cは手続型言語
880 名前:433 mailto:sage [2012/08/05(日) 13:23:49.15 ] >>832 832さんありがとうございます! そのページのソースコードに記述されているstatic(きおくくらす?で合ってるのかな…?)をヒントにコンパイルエラーの謎を解明できました。 具体的な原因としてObjectルーチンを何度も通すプログラムを書いており、 struct s_int iobject ; という構造体変数宣言を何度も行っている事が原因だったようで、これをヘッダー部分(main()以前)に書く事でコンパイルが正常に通りました。 またひとつ勉強になりました。ありがとうございますm(--)m
881 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 13:39:50.96 ] どういたしまして
882 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 13:47:48.09 ] >>880 ttp://ideone.com/mZwCB 自動変数というのは自動的に領域の確保と解放をする変数で 初期化(あるいは代入)せずに参照すると値が不定となる 自動変数ではなく静的変数とするにはstaticを付けるかグローバル変数とする
883 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 14:56:49.16 ] ズルして楽して覚えても結局は言語仕様に戻る罠。 面倒でも暇を見てヘルプや仕様を読む癖をつけるのが良いと思うよ。
884 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 14:57:59.08 ] >>876 いろいろやりかたはあるが、条件を表にしておき関数ポインタを持っておくとか オートマトンで使われるような状態遷移図にも似たような手法が使われる
885 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 15:29:21.79 ] #include <stdio.h> #define _TRUE 1 #define _FALSE 0 int fff(void) { printf("%s\n", __func__); } int fft(void) { printf("%s\n", __func__); } int ftf(void) { printf("%s\n", __func__); } int ftt(void) { printf("%s\n", __func__); } int tff(void) { printf("%s\n", __func__); } int tft(void) { printf("%s\n", __func__); } int ttf(void) { printf("%s\n", __func__); } int ttt(void) { printf("%s\n", __func__); } int (*tbl[2][2][2])(void) ={ { { fff, fft }, { ftf, ftt }, }, { { tff, tft }, { ttf, ttt }, }, }; int main(void){ (*tbl[_FALSE][_FALSE][_FALSE])(); (*tbl[_FALSE][_FALSE][_TRUE])(); (*tbl[_FALSE][_TRUE][_FALSE])(); (*tbl[_FALSE][_TRUE][_TRUE])(); (*tbl[_TRUE][_FALSE][_FALSE])(); (*tbl[_TRUE][_FALSE][_TRUE])(); (*tbl[_TRUE][_TRUE][_FALSE])(); (*tbl[_TRUE][_TRUE][_TRUE])(); return 0; }
886 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 15:29:52.05 ] lenovo@LENOVO-0C414D26 ~ $ ./a.exe fff fft ftf ftt tff tft ttf ttt
887 名前:433 mailto:sage [2012/08/05(日) 17:00:58.51 ] >>882 自動変数と静的変数というのは一般的に言われる「変数」を噛み砕いたものという事でしょうか? 初期化しないままに参照するのは結果的にエラーを吐くのは分かったのですが、 初期化したものをその後に参照しようとしても参照できない場合があるのはなぜなのでしょう やはりCの仕様なんでしょうか…
888 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 17:11:38.25 ] アドレスが違うか見てみれば
889 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 17:13:28.31 ] "スコープ"とか"変数の寿命"でググれや
890 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 17:54:40.51 ] >>887 ttp://ideone.com/xmVR8 >自動変数と静的変数というのは一般的に言われる「変数」を噛み砕いたものという事でしょうか? 変数には大雑把にいって自動変数と静的変数がある >初期化したものをその後に参照しようとしても参照できない場合があるのはなぜなのでしょう 初期化したつもりで自動変数を初期化してなかったので 「変数'iobject'が初期化されてないのに使われようとした」というエラー(警告?)になったのだと思われ Run-Time Check Failure #3 - The variable 'iobject' is being used without being initialized.
891 名前:433 mailto:sage [2012/08/05(日) 18:16:14.23 ] 返答早すぎですw多くのレスありがとうございます>< まだC言語は半月くらいの経験しかない身ではしたない部分があるにも関わらず多くアドバイスを頂き感謝し尽せないです。。。 >>890 初期化した場所が悪かったのか、初期化した後変数が別の変数に変わってしまったのか分かりませんがエラーの内容からすれば変数の初期化をする場所にルールがあるんじゃないか、とちょっと気づいてきました…(´・ω・`) >>889 ブロックスコープという存在を知らなかった…orz しかも私が今併用しているC言語入門書には書いていない件(tyow >>888 ポインタですね^^ 後々解析してみまぁす。ありがとうございます〜 皆様、貴重なご教示ありがとうございました。
892 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 18:32:40.71 ] >>891 www9.plala.or.jp/sgwr-t/index.html
893 名前:876 [2012/08/05(日) 18:36:50.41 ] >>877 , 884様 とりあえず今回は3条件T/Fで設計してしまったので、 ビットフラグで行こうと思います。 検索したらUMLとか状態遷移とかを解説しているページが 多く見られ、大変参考になりました。ありがとうございました。
894 名前:デフォルトの名無しさん [2012/08/05(日) 18:45:27.84 ] はじめまして。 <=====の行がうまくいかないです。アドバイスお願いします。 int *po,ban,i; po=&ban; for(i=0;i<5;i++){ *(po+i)=i; /*<=====*/ }
895 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 18:51:18.64 ] とりあえず、がんばれ、と言っておこう
896 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 18:56:35.63 ] >>894 ttp://ideone.com/g4bsT
897 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 18:56:57.06 ] はじめまして。 <=====の行がうまくいかないです。アドバイスお願いします。 int *po,ban,i; po=&ban; for(i=0;i<5;i++){ *(po+i)<=====i; }
898 名前: ◆QZaw55cn4c mailto:sage [2012/08/05(日) 19:08:48.26 ] >>894 ideone.com/cV82Z
899 名前:デフォルトの名無しさん [2012/08/05(日) 19:20:02.69 ] >>896 >>898 banを配列にしないとダメなんですね。 サンクス
900 名前:デフォルトの名無しさん [2012/08/05(日) 19:29:40.53 ] 自動変数は何が自動なんですか。手動変数もありますか。
901 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 19:30:21.98 ] ぽいぽいPOI!!! ふぉいふぉいFOI!!! カネ返せFOI!!! カネ返せPOI!!!
902 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 19:34:03.62 ] 全自動変数 半自動変数 手動変数
903 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 19:41:31.07 ] 変数がメモリ上のどこにあるのかを考えろよw 答えはそこにある。
904 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 19:46:12.93 ] 変数 固定変数 変動定数 定数
905 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 21:09:56.68 ] ふひひ
906 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 23:53:22.62 ] このスレ質問ても処理系は何?と聞いてごまかして答えてくれないよね。 専門知識を教えるのは億劫なんかね。
907 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 23:56:26.74 ] 質問ても?
908 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 00:00:50.30 ] >>907 ゴミは黙れ
909 名前:デフォルトの名無しさん [2012/08/06(月) 00:06:41.76 ] >>907 茶化すなよ
910 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 00:53:54.49 ] >>906 C言語は低レベルなので処理系聞かないと規格票の範囲でしか答えられないからです
911 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 01:05:43.22 ] >>908-909 失せろゴミ
912 名前:デフォルトの名無しさん [2012/08/06(月) 01:29:45.60 ] >>906 いや、お前がゴミだから。
913 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 01:50:31.12 ] IDがでねー掲示板で何やってんだお前ら。。
914 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 01:51:54.79 ] ↑馬鹿
915 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 01:57:04.14 ] ('_')
916 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 02:08:19.48 ] 知識は出し惜しみすんなよクズ 共有しないと意味ねーだろ
917 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 02:10:22.41 ] もうずっとプログラマ大杉
918 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 02:14:15.34 ] 共有() 一方的にもらうだけの乞食が
919 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 02:21:13.35 ] 処理系を知りたいならアセンブラ。 遠慮せずにそちらの世界へ。
920 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 02:22:09.03 ] けんかしにここにきてるのかお前ら そんなひまがあったら働け
921 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 02:30:41.89 ] >>919 「処理系」の意味がわかってないような
922 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 04:52:17.60 ] >>919 お前が一番分かってない
923 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 04:54:56.41 ] >>921-922 ほう。 どうわかってないのか、正しくはどうなのか説明してみ。
924 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 04:56:47.56 ] >>923 人に教えてもらう態度ではないな
925 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:00:05.49 ] >>924 失せろゴミ
926 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:02:32.65 ] >>919 お前が処理系を何だと思ってるか説明するのが先だ ゴミしか言えないのかよ
927 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:08:28.84 ] 判断の根拠を言えよバーカ わかってないのに判断したのかよ
928 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:09:47.45 ] ゴミとバーカしか言えないのかよ
929 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:10:32.27 ] アホ
930 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:15:13.50 ] >>910 と>>919 の処理系の意味の違いさえ分からないゴミカス乙
931 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:18:30.81 ] ゴミとバーカとアホとゴミカスしか言えないのかよ
932 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:19:51.18 ] お前らいい加減やめろよ・・・
933 名前:デフォルトの名無しさん [2012/08/06(月) 05:20:03.08 ] しか言えないのかよしか言えないのかよ
934 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:27:39.39 ] >>930 https://www.google.co.jp/search?q=%E5%87%A6%E7%90%86%E7%B3%BB
935 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:36:14.40 ] >>930 >>919 だけが「処理系」の意味を知らないだけで 他の人は全員「処理系」の意味を理解して、同じ意味で使っている。
936 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 06:56:49.37 ] 919に言ってやれよ
937 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 07:01:02.28 ] 919に言ってやれよしか言えないのかよ
938 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 07:26:09.48 ] 919に言ってやれよしか言えないのかよしか言えないのかよ
939 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 07:34:52.32 ] 919に言ってやれよしか言えないのかよしか言えないのかよしか言えないのかよ
940 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 07:40:55.44 ] アホ自慢はもういいから。
941 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 07:57:40.08 ] implementation 実装、処理系
942 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 08:00:57.45 ] 規格ではなく処理系でことなる部分がある(処理系依存の部分、未定義の部分)
943 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 08:04:17.84 ] ダンプ解析しないのかな。
944 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 08:06:47.66 ] 童貞先生ゴミマ