- 1 名前:デフォルトの名無しさん [2008/04/29(火) 09:44:57 ]
- 言語の入門者向け解説スレです。
・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 26 pc11.2ch.net/test/read.cgi/tech/1206196600/ 過去スレ 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++の宿題を片付けます 105代目 pc11.2ch.net/test/read.cgi/tech/1208268461/
- 741 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 13:53:49 ]
- ローカル(自動)変数とか、静的(スタティック)変数とかを教える意図の質問じゃないのかな?
- 742 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 13:54:37 ]
- >>740
void hoge(void) { int a; ← A a = 2; a = a * 2; } ←@ void main (void) { hoge(); hoge(); } @関数終わったらaはどうなる? A2回目のhoge呼び出しの時、このaに4が入っていると思うか?
- 743 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 13:56:53 ]
- ローカル変数には初期値入れることになるんだし
なんだかなぁって思う問題
- 744 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:32:20 ]
- >>741-743
こんな早く答え返ってくるとは思ってませんでした。 有難う、みんな優しいですね。 >>742 @無くなる? A…4じゃないんですか?
- 745 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:35:20 ]
- aに何も入れない状態で出力させるのさ。
できれば、hoge()を呼び出す階層を変えて試すのもやってみて (別の関数を呼び出しその中からhoge()を呼ぶ)
- 746 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:48:58 ]
- 成程!試してみますね。
ご丁寧に有難うございました。
- 747 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 15:16:09 ]
- 試してみる、はよくない
たまたま4が入ってたらどうするんだ
- 748 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 15:25:10 ]
- 高確率で入ってるだろ。
だから深さも変えるといいかな、と。 アドレス表示させる手もあるが。 最適化されてると混乱しそう。
- 749 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 15:41:12 ]
- ちゃんとCの仕様を示して理解させるのが正しい姿勢
とりあえず試してうまくいったから、なんてのを放置すると そのうち必ずなにかやらかす
- 750 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 15:42:09 ]
- >>744
@無くなる A何が入っているかわからない
- 751 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 15:50:04 ]
- >>740
関数の中でstaticをつけずに宣言した変数は、その関数の呼び出し中にのみ存在する変数(auto変数)となる。 宣言した関数から抜けた時点で、変数のために使われていた記憶領域は解放されて意味のないものになる。 このような変数は、明示的に int a=2; などのように初期化しないかぎり、 その宣言時における値は常に不定(何が入っているかわからない)である。 このような変数の中身を、明示的に値を与える前に使ってはいけない。
- 752 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 15:50:57 ]
- 学校の課題なんだから、そんなのは教わるんだろう。
今知りたいのはこの質問の意図するところだべ。
- 753 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 15:55:28 ]
- 仕様を理解してりゃ意図はわかるだろ
意図がわかんないってのは理解してないからだ
- 754 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 16:00:37 ]
- >>740
なお、staticをつけて宣言した変数は、プログラムが実行を開始してから終了するまで存在し、 その開始時に一度だけ、明示的な初期化式があればその値に、なければ「=0;」とか「={0};」と 書いたかのように初期化される。
- 755 名前:740 mailto:sage [2008/05/14(水) 23:45:33 ]
- >>753
その通りです。 まだ講義で習ってない範囲(質問する前は習ってない範囲 かすらもわかりませんでした)で何も知りませんでした。 今回皆さんに教えて頂いたお陰でまだ何となくですが、 わかるようになりました。 あとは講義で理解していこうと思います。 補足してくださった方々もわかりやすい説明有難うございました! ここ勉強になりますね。
- 756 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 01:50:36 ]
- >>735
宿題スレで頻繁に見られる課題です。実装したくなったときに参考にしてください。 基本形 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6550.txt 逆ポーランド電卓で(基本形の応用) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6551.txt 他にもいろいろ回答されていましたが、私の手元ににはありません。
- 757 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 02:16:27 ]
- >755
忠告だが その講義の教官の言うことは眉唾して聞いたほうがいい 教えてないことを聞くとかありえねー
- 758 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 02:56:17 ]
- 課題自体はすげー授業のそのまんま復習くせーし
話聞いてなかったんだろどうせ
- 759 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 02:56:17 ]
- >>757
両方の言い分を聞かないと分からないぞ ここで教官の言い分を聞く事はまずないだろうけど
- 760 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 02:57:06 ]
- >>757
前半と後半が支離滅裂なんだがw
- 761 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 02:58:18 ]
- >>760
日本語は難しいです
- 762 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 03:03:26 ]
- >>760
日本語読めない人?
- 763 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 03:06:17 ]
- 課題なら別に教えてないことが出てきてもいいと思うけどな
小学校じゃあるまいし
- 764 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 03:08:53 ]
- 横槍だが 眉唾する という使い方がないんです、辞書を引いても分かるように。
- 765 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 03:11:29 ]
- >>764
「眉に唾する」ならいいのかな?
- 766 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 03:13:52 ]
- ttp://www.geocities.jp/tomomi965/kotowaza11/11-54-4.html
- 767 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 03:27:57 ]
- 下記の場合volatileがあるためValueを外部から書き換えるまでループを続けると思うのですが、
volatile ULONG Value; // レジスタ(外部から書き換えられる) void main(void) { Value = 0; while(Value == 0){ ←これ ; } } これを下記のようにポインタを経由すると最適化対象になってしまうのでしょうか? (このポインタもvolatileをつける必要がある?) volatile ULONG Value; // レジスタ(外部から書き換えられる) void main(void) { Value = 0; ULONG* pV = &Value; while(*pV == 0){ ←これ ; } }
- 768 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 03:29:31 ]
- >>767
volatile 修飾する必要があります
- 769 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 10:13:29 ]
- >>767
volatileをつけなければ最適化対象になります。 が、最適化対象になるとValueを外部から書き換えるまでループを続けるという動作を必ずしなくなるわけではありません。 つまり、volatileをつけなくてもあなたの希望する動作をする可能性はあります。 つまり、volatileをつける必要があるとは言い切れません。
- 770 名前:「言い切れない」は詭弁だ mailto:sage [2008/05/15(木) 12:16:11 ]
- >つまり、volatileをつけなくてもあなたの希望する動作をする可能性はあります。
それは普通、つける必要があると言いますね。
- 771 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 12:22:57 ]
- ↓必要条件とか十分条件とか言い出すヤツ
- 772 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 13:40:39 ]
- |↑
++ ビルド毎に出力を確認すればおk てか、Cの話でなくなるが、テストで引っ掛けろ
- 773 名前:デフォルトの名無しさん [2008/05/15(木) 22:38:30 ]
- プログラム知識0の俺がCを勉強しようと思うんだが
解説サイトと本どっちがいいの? 色々な掲示板みてたら両方とも良いって書いてたからわからなかった。
- 774 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:39:35 ]
- じゃあ、とりあえずお金のかからない方法でやってみて
それで不満に感じたら本を買えば良いんじゃないかな
- 775 名前:デフォルトの名無しさん [2008/05/15(木) 22:49:12 ]
- レスありがとう
その方法が一番いいかな〜 とりあえずググってサイトさがしてみる。 サイトって「C言語 入門」でググって上らへんのなら大丈夫だよね?
- 776 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 23:32:03 ]
- 本はだめな本があるから、本の紹介サイトを見たほうがいいぞ。
- 777 名前:デフォルトの名無しさん [2008/05/15(木) 23:39:22 ]
- そうなんだ
まだ買わなくてよかった〜 ありがとう それみて本選ぶよ
- 778 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 05:49:52 ]
- 本もそうだがサイトは特に多くのところを回った方がいい。
嘘を書いている、情報が古すぎる、環境依存なコード、誉められないコーディングスタイルetc... あと、サイトにすることで有利な点は、疑問点があればここにアドレス張り付ければ一応質問できることかな? 書籍だと同じ本持ってる人間以外には内容をいちいち書いてもらわないと質問できないから。
- 779 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 09:21:08 ]
- 何を学ぶか?で選ぶ資料も違ってくる。
ソートに関しては、すでにどの手法が高速か分かりきっているが 教本によって記述が違っているものも。中には、あれ?って思うものも。
- 780 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 09:31:06 ]
- 宿題スレでHit and Blowのソースコードを書いてもらったものですが、
頭が悪いせいか理解しようとしても意味がよくわかりません。 誰か詳しい解説をお願いします。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6540.txt
- 781 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 09:32:00 ]
- っつか、コードが悪い
- 782 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 10:38:15 ]
- 宿題スレはとりあえず提出できればいいやーって人向けで、
自分で理解するには向いてないと思う つか>>780のソースは宿題スレではかなり親切な方だと思うけどな 一応コメントついてるし
- 783 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 11:46:34 ]
- 数当てだからといって、4桁の整数にこだわらずに
数字の文字4個の配列を使ってる。そこだろう 数字 + '0' <-> 数字の文字 理解するところまで宿題なんなら、ヒントだと思って考えてみるよろし
- 784 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 13:24:00 ]
- >>780
何がわからないのか具体的に説明してくれないと解説のしようもない。
- 785 名前:デフォルトの名無しさん [2008/05/16(金) 14:41:36 ]
- すみません。いきなりですが、本当に初心者なので分かりません。C言語では基本的に全て数値としてデータを格納すると聞きました。
ただ逆に数値(1〜9)を””で囲んで文字列とする場合、内部データは本来の数字にNullが付いた物でなく、ASCUコードで あれば文字の1なら10進数の49(16進数の10X3)に変換されるという認識でよいのでしょうか? 又、普通の文字ならは該当する10進数・16進数に変更はなくNuLLが付くだけなのでしょうか?数値ま場合だけデータそのものが 例えば1なら実質先程言った49に変換されるという認識でよろしいのでしょうか?どうかご教授願います。
- 786 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 14:44:37 ]
- 16進ダンプとかって最近は見る機会無いのかな
- 787 名前:デフォルトの名無しさん [2008/05/16(金) 14:48:13 ]
- >>786
Windowsでは見る機会がないでしょうねぇ〜〜〜禿藁 だからLinuxを使えとあれほどry
- 788 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:08:13 ]
- >>785
C言語では(エスケープシーケンスを除き) ど ん な 文 字 も そのマシン上での文字集合に対応するデジタルな値として扱われる。 ASCII文字集合を使用しているすべてのマシンで、"1"は0x31 0x00で、" "は0x20 0x00である。 数字であろうと何であろうと扱いに差はない。
- 789 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:09:34 ]
- linuxだと強制的に見なきゃいけない機会でもあんの?
- 790 名前:デフォルトの名無しさん [2008/05/16(金) 15:11:01 ]
- ありがとうございました。Cはそなのですね。
- 791 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:11:26 ]
- ntsd使うなり、IDEの16進メモリ表示モード使うなり
さすがにgdbに張り合ううつもりはないが、ntsdは結構遊べる
- 792 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:12:46 ]
- なお、Cの話をする際において安易にNULLという単語を使うべきではない。
CにおいてNULLと書いた場合通常はヌルポインタ定数を表すマクロNULLのことをさす。 ASCIIのNULのことを言う場合にはNULまたはヌル文字と表記するべきである。 ついでに、ASCIIは A.S.C.I.I.(American Standard Code for Information Interchange) であってASCUではない。
- 793 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:14:25 ]
- >>789
mpeg とかかまってると, Windows でも強制的に見なきゃいけない機会は結構あるが…
- 794 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:14:32 ]
- >>792
お前が出直して来い
- 795 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:35:15 ]
- 俺がNULって書いたらナルだろーが!
とおっしゃりたいのですか? どっちでもいいじゃん
- 796 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:42:56 ]
- 呼び方なんてどうでもいいよ
区別がついてないのはお前の方じゃねーかって話
- 797 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:44:35 ]
- 何を指摘したいのかを明確に挙げずに文句つけても話が混乱するだけだぞ
煽りたいだけならよそでやれ
- 798 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:46:11 ]
- >ASCIIのNUL
……
- 799 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:46:33 ]
- なんかまた変な奴が沸いたな。
相手すんなよ、つけあがるから
- 800 名前:デフォルトの名無しさん [2008/05/16(金) 15:47:50 ]
- Windows使ってるとNULLとNULの違いすら分からないようだな。
駄目だこりゃ。
- 801 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:49:15 ]
- なんだ
またいつものアレか
- 802 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:54:28 ]
- >>800
違いですかwww
- 803 名前:デフォルトの名無しさん [2008/05/16(金) 16:06:33 ]
- ニート・ヒキは金どうしてる?
yutori.2ch.net/test/read.cgi/news4vip/1210919591/ 1 以下、名無しにかわりましてVIPがお送りします。 [] 2008/05/16(金) 15:33:11.35 ID:2pPh1TlA0 自分でソフト作って株の売買自動でやらせてる 種が50万しかなかったし初めて2月目だから 一日三万がいいとこだし金おろせないけど まあ親元だし食ってくのには困らんので満足してる しかし欝だ・・・やることなくて寝てばっかり・・
- 804 名前:雷 [2008/05/16(金) 16:28:57 ]
- microsoft visuar studioで
*印を出力するプログラムを作成してください 整数型の変数nに7〜15の値を設定する 変数nの値により,以下のような表示を行う(n=7の場合) for文(またはwhile文)とif文の組合せである カウンタ変数が偶数か奇数かで判断 printf文は printf(“n=%d\n”,n); // nの値を出力 printf(“ “); // 空白を出力 printf(“*”); // *印を出力 printf(“\n”); // 改行する だけを使用する n=7 * * * * * * * * * * * * * * * * * * * * * * * * * 上の条件でこういう風に表示するプログラムを書いてください
- 805 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 16:37:31 ]
- 宿題なら宿題スレへ
- 806 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 16:38:00 ]
- >>804
>>1
- 807 名前:780 mailto:sage [2008/05/16(金) 18:32:38 ]
- >>782
>>783 >>784 ありがとうございました。
- 808 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 10:33:01 ]
- float型やdouble型の内部構造がいまいちよく理解できないんだが、どっかわかりやすいとこない?
最上位ビットが符号で使われるのはわかるんだけど、それ以外がよくわからない。 小数点以下の数値をどうやって保持してるの?
- 809 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 10:42:45 ]
- >>808
ja.wikipedia.org/wiki/IEEE_754 実装がこれに準拠しているかどうかは別問題
- 810 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 11:12:45 ]
- >>809
ありがとう。指数表記を使ってるのがわかって疑問が解けました。
- 811 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 11:40:19 ]
- typedef struct{
double x, y; }vector_t; typedef struct{ vector_t vector; double length; }edge_t; edge_t *edge_alloc(char *filename, int *edge_num) { int i, point_num; vector_t *point; edge_t *edge_area, *edge; FILE *fp; 途中略 edge_area=malloc(sizeof(*edge)*(point_num+1)); edge=&edge_area[1]; edge[-1]=edge[point_num-1]; *edge_num=point_num; return edge; } このソースなんですが、edge[-1]とかいう場所に代入していいんですか?
- 812 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 12:17:49 ]
- edge[-1] == (&edge_area[1])[-1]
- 813 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 12:32:03 ]
- えっと〜
?
- 814 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 12:36:28 ]
- edge[-1] == edge_area[0]
- 815 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:01:27 ]
- edge[n]と書くと、配列edgeのn番目、みたいに読める。
しかし、配列の中(最初かもしれないし、最後かもしれないし、途中かもしれない)を 指し示すポインタedgeの、そっからn番目、とも読める。 もちろん、edge[-1]の存在は、ちゃんと担保されてないといけないけど、 文法的にというか、読み方的には、そういう意味 てことで、>>814
- 816 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:07:28 ]
- edge[-1] == *(egde - 1)
なので文法的に問題は無い 大丈夫かどうかは指してる先がちゃんとあるのかの問題になる
- 817 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:10:36 ]
- 値を代入してるわけではないんですか?
- 818 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:14:13 ]
- 代入してる場所は代入しても問題ない場所。
上の数レス読んで理解できないならあきらめろ。
- 819 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:14:29 ]
- ああそうだ もしかしてと思ってエスパーしてみるが、
edge=&edge_area[1]; の部分で、配列のコピーが発生したりは、してないからね 強いて言うなら、位置情報を代入している。それも、「一個先の位置」ね。
- 820 名前:デフォルトの名無しさん [2008/05/17(土) 13:18:52 ]
- 4,5,6進数の九九を作ってください。
4進数なら 1 2 3 1 1 2 3 2 2 10 12 3 3 12 21 こんな感じです。お願いします。
- 821 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:19:31 ]
- >>820
宿題スレへどうぞ
- 822 名前:デフォルトの名無しさん [2008/05/17(土) 13:20:36 ]
- 4,5,6進数の九九を作ってください。
4進数なら 1 2 3 1 1 2 3 2 2 10 12 3 3 12 21 こんな感じです。お願いします。
- 823 名前:デフォルトの名無しさん [2008/05/17(土) 13:22:05 ]
- なんか九九表がうまくできないですけど
- 824 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:22:10 ]
- 1 2 3
1 1 2 3 2 2 10 12 3 3 12 21 こうしたいんだろ? それはともかくとっとと消えろよ
- 825 名前:デフォルトの名無しさん [2008/05/17(土) 13:22:36 ]
- 今日から、パッケージソフトを作るための勉強をします。
何の言語を勉強すれば、よろしいでしょうか? 個人的には、C++がいいかと。 求人案件などを見ると、求人が多いから。 (ちなみに、どんなソフトを作ろうとしているかというと。 動画編集ソフトを作ろうとしています。)
- 826 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:23:43 ]
- >>825
スレタイを百回音読して涙を流しながら去れ
- 827 名前:デフォルトの名無しさん [2008/05/17(土) 13:25:41 ]
- >>826
さーせn
- 828 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 15:46:46 ]
- Borland BCC32(フリー版)を使ってますが、リアルタイムキー入力を使いたいのですが
その関数名を教えて下さい (BasicのINKEY$見たいな物)
- 829 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:29:04 ]
- >>828
GetAsyncKeyState
|

|