1 名前:デフォルトの名無しさん [2009/10/29(木) 21:10:18 BE:227211146-DIA(352353)] C言語の*入門者*向け解説スレッドです。 初心者、初級者の方は他の質問スレのほうが良いかもしれません。 教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題片付けます 131代目 pc12.2ch.net/test/read.cgi/tech/1255709298/ ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ・開発環境や動作環境も晒すと答えが早いかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 54 pc12.2ch.net/test/read.cgi/tech/1254829314/ 過去スレ 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
477 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 04:40:09 ] >>458 遅レスだけど intだと環境依存だが符号ビットが立っていると右シフトすると おかしなマスクになる事があるから
478 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:07:52 ] シフトに関してもアセンブラが優れている。 Cのシフトは問答無用、見境なく全部シフトさせてしまうが アセンブラなら大抵、符号ビットを残したままシフトさせることができる。算術式シフトってやつだな!
479 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:11:51 ] それCPUの機能であってアセンブラがどうのとは違うのでは
480 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:12:44 ] strstr関数をライブラリ無しでやるには?
481 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:18:09 ] ポインタをインクリメントしながら文字比較をしていくしか
482 名前:デフォルトの名無しさん [2009/11/08(日) 11:21:45 ] 遅くてもいいんなら、 一文字ずつ比較する文字列比較を、開始位置を一文字ずつずらしながらループする。
483 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:29:55 ] string s="abcde"; s="abcdef"; ってやったら、最初の行で作ったabcdeがメモリ上にのこっちゃって効率悪いんでしょ? ガベージコレタクに頼らず自分でメモリに残ってるゴミを消す方法ないの?
484 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:30:02 ] なつかしいな。 BM法とか勉強した記憶が。
485 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:33:04 ] >>483 リテラルを使わなきゃいいんじゃねw
486 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:40:24 ] string *s = new string("abcde"); *s = "abcdef"; delete s;
487 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:44:16 ] unsigned charは1byteでmalloc(size)はunsigned char [size]と同じ大きさの連続メモリを返すってのは規格を満たすすべての処理系で正しい?
488 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:00:40 ] ループ毎に、配列でいう1番目をサーチし、ヒットがあったなら次に2番目をサーチし、またあれば3番目をサーチしたいのですが、ちなみにヒットする項目がなければ配列に登録します ただやりたいのが、配列1番目が1byte、2つめが4byte、最後が4byteとなっているのですが、これらを管理する上でいい方法はないでしょうか?
489 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:01:09 ] >>477 おまえは にほんごが よめないのか?
490 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:04:01 ] 変数初期化のとき*が2つついてる奴あれ何?
491 名前:デフォルトの名無しさん [2009/11/08(日) 13:05:55 ] >>490 ポインタへのポインタ
492 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:18:41 ] >>488 配列で異なるサイズのデータを扱う方法を訊ねてるとして 普通は、1)最大に合わせる、2)unionで全部をひとつの型にまとめる あたり
493 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:55:13 ] >>490 *は何個でも付けれるぞ int ************p; みたいなのもok
494 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:04:45 ] (*************printf)("HELLO.");
495 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:18:19 ] 先生質問です。 char** pptr; char strA; int num1,num2; //領域確保 pptr = calloc ( (num) , sizeof (char)); for (i = 0; i <= num1; i++){ pptr[i] = calloc ( (num2 + 1) , sizeof (char)); } //文字代入 for (i = 0, j = 0; i < num; i++, j += num2){ strncpy (pptr[i], strA + j, num2); } この処理でnum1に5以上の値が入るとSegmentationFaultになります。 デバッガではstrncpyのラインがSegmentationFaultの原因ラインとでます。 printfで表示して確認してみると、num1でnum2が割りきれ、かつnum1が5以上のときに pptr[0][0]に領域以上の文字化け表示が出るときが有ります。 この部分の記述で不味い点があるのでしょうか?
496 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:20:37 ] ポインタのポインタってポインタで代用できないの??? ポインタのポインタと言えどもポインタであることは間違いがないので ポインタのポインタとするのではなく、ポインタへのポインタでしても ポインタのポインタであることは変わりがないじゃないの。
497 名前:デフォルトの名無しさん [2009/11/08(日) 14:22:35 ] ポインポインポインポインポインポインポインポインポインポイン ポインポインポインポインポインポインポインポインポインポイン ポインポインポインポインポインポインポインポインポインポイン ポインポインポインポインポインポインポインポインポインポイン ポインポインポインポインポインポインポインポインポインポイン インポ
498 名前:デフォルトの名無しさん [2009/11/08(日) 14:25:28 ] pptr = calloc ( (num) , sizeof (char)); はまずい。 pptr = calloc ( (num) , sizeof (char *)); にしろ
499 名前:デフォルトの名無しさん [2009/11/08(日) 14:32:27 ] >>496 typedef int *pint; pint *p = N;
500 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:32:36 ] ポインタって int *p; *p = Hogeragecho; とするときと p = hogeragecho; とするときがありますが 何が違うのですか。 どういうときにアスタリスクを意識しないといけないのですか。 明らかにアドレスを要求している文脈のときはアスタリスクつけなくていいのは分かりますが 明らかにアドレスではないものを要求しているときでさえアスタリスクつけないソースもあります。
501 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:34:59 ] そのソースがバグってんだろ。 見せてみ
502 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:35:09 ] >>498 見事に改善しました・・。 ありがとうございます! sizeof (char) と sizeof (char*)では確保される領域の大きさが変わるのですか? ggr先生に聞いてみますが、よろしければ後学の為ご教授ください。。
503 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:38:31 ] printf("sizeof(char) = %d, sizeof(char*) = %d \n", sizeof(char), sizeof(char*));とかやってみ
504 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:42:02 ] >>503 sizeof(char) = 1, sizeof(char*) = 4 になりました。 char*は1バイトじゃないのですね。
505 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:53:03 ] ポインタだからな アドレスが32bit環境なら32bit(=4バイト)
506 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:56:19 ] >>505 とてもわかりやすい説明ありがとうございます。 ポインタのサイズにも気をつけます
507 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:03:45 ] 6502でさえ16ビットあるだろ。
508 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:39:19 ] いい加減、バイトサイズは定めるべきだと思う shortだとかlongだとかじゃなく 8bitにしたいなら、int8 16bitにしたいならint16 とか、明確にサイズを決められると見易く、いろいろ便利なのに
509 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:43:59 ] バストサイズに見えた。
510 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:45:05 ] typedefすりゃいいじゃん
511 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:45:15 ] fortranのようにreal(8)とかでいいのにね
512 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 17:27:46 ] stdint.h があるだろ
513 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 19:27:00 ] >>477 しってる。だから「右シフト使わない前者」に限ったんだ。
514 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 19:29:04 ] >>487 > unsigned charは1byteで うん > malloc(size)はunsigned char [size]と同じ大きさの連続メモリを返す 管理領域を含むから少し大きいかも。少ないことはないし、連続していることも確実
515 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 20:54:22 ] ツェー程度の言語仕様で悩んでるようだと 「ツェーたすたす」とか「風呂釜掃除用薬剤」で発狂すんぞ
516 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 21:07:14 ] その言い回しカッコイイすね先輩
517 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 21:09:12 ] ツァーだろ常孝
518 名前:デフォルトの名無しさん [2009/11/08(日) 21:48:41 ] 0から1023までの10進数を2進数に変換するプログラムを作っているのですがうまくいきません 数値をしっかり指定すれば表示されるようになるのですが、forで0から1023まで繰り返してやろうとするとうまくいかないみたいです アドバイスお願いします #include <stdio.h> int main(void){ int nisin[10]; int i, j, k; /*入力*/ for(k=0; k<=1023; k++){ k=j; /*変換*/ for(i=0; i<10; i++){ nisin[i] = j % 2; j = j / 2; } /*出力*/ for(i=10-1; i>=0; i--){ printf("%d",nisin[i]); } } return 0; }
519 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 21:50:10 ] 関数にまとめれば見通しがよくなるんじゃないかな
520 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 21:51:21 ] j=k;
521 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 21:51:30 ] >>518 k=j; // 逆?
522 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 21:58:04 ] どこに10進数が出てくるのやら。
523 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 21:59:29 ] >>522 1023 じゃね?
524 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 22:00:20 ] 10進数から2進数にしたいなら まず10進数にするところから始めないとダメじゃん。
525 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 22:42:01 ] 堰澤映
526 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:14:23 ] 変数のスコープを図示する問題なんですがexternの使い方が本来のものと違うので なんだかわけがわからなくなりました aとbはわかったのでcの部分を教えて下さい #include <stdio.h> extern int a; int b = 2; int func(){ int b; extern int c; b = 3; printf("func: a = %d, b = %d, c = %d\n, a, b, c); c = 6; return 0; } int c = 4; int main(){ extern int c; func(); a = 5; printf("main: a = %d, b = %d, c = %d\n", a, b, c); return 0; } int a = 1;
527 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:19:21 ] グローバル変数の extern と同じ ただし見える範囲が main とか func の中に限られる
528 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:23:17 ] >>527 ということはfuncの中では6 mainの中では4ということですか? でも実行すると func: 〜〜c = 4 main: 〜〜c = 6 となるのですが
529 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:28:52 ] 何をどう考えたらそうなるんだ > int c = 4; とあるので、cの初期値は4だ funcのprintfが実行される時点ではまだ初期値のままだから4が表示される その後 > c = 6; が実行され、それからmainのprintfが実行されるので6が表示される
530 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 01:41:03 ] >>529 あ〜何となくわかった気がします ありがとうございます
531 名前:デフォルトの名無しさん [2009/11/09(月) 03:26:01 ] C言語のポインタ、配列、ファイルの問題です n件のデータを配列に入力しその平均値を出力するプログラムをつくり、 実行部において添字演算子は用いず、*(p+i)と*p++それぞれを用いるパターンを作る ただし、入出力処理をファイル処理に、入出力ファイル名はコマンドラインで指定する 作れません、教えてください
532 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 03:29:00 ] 宿題は宿題スレへ 作った所までどこかにあげれば答えないこともない
533 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 03:38:02 ] ぱっと見、*(p+i)を用いるのが難しそうに思うんだけどなぁ。 iどこで使おうか。
534 名前:デフォルトの名無しさん [2009/11/09(月) 03:38:55 ] #include<stdio.h> int main(void) { int A[100]; int a,b,i,n,*p; *p=A[0]; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",*(p+i)); } for(i=0;i<n;i++){ b+=*(p+i); } a=b/n; printf("%d",a); return(0); } です
535 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 03:41:19 ] ああやっぱり。p+i使えばp++使わなくなるよなぁ 無理矢理使えって話だろうか
536 名前:デフォルトの名無しさん [2009/11/09(月) 03:41:27 ] *p++ 使ってないぞ
537 名前:デフォルトの名無しさん [2009/11/09(月) 03:43:03 ] 入出力もファイル処理になってないし コマンドラインも無視してるな
538 名前:デフォルトの名無しさん [2009/11/09(月) 03:45:45 ] >>535 それぞれのパターンを作れってことです
539 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 03:46:51 ] C言語ってintは4バイト、byteは1バイトだけど 自分で新しい型をつくることってできるんの? 6バイト扱える型とか
540 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 03:48:01 ] >>539 無理 C++みたいにclassが使えないと 構造体とか共用体で無理矢理関数で似たような事は出来るが
541 名前:デフォルトの名無しさん [2009/11/09(月) 03:49:23 ] 宿題は宿題スレへ pc12.2ch.net/test/read.cgi/tech/1255709298/657 貼って来てやったからあっちへ逝け
542 名前:デフォルトの名無しさん [2009/11/09(月) 03:51:06 ] >>539 typedef char newtype[6];
543 名前:デフォルトの名無しさん [2009/11/09(月) 03:53:20 ] >>541 どうもです
544 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 03:58:24 ] >>541 どんだけ親切なんだよ
545 名前:デフォルトの名無しさん [2009/11/09(月) 04:06:41 ] >>538 がしつこいからさ
546 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 04:41:40 ] レスを向こうにコピペしてから誘導するってのはちょっと新鮮だ
547 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 04:54:19 ] if()
548 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:47:20 ] てす
549 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:52:14 ] 配列とは何かって聞かれたら 大量の変数を一括管理するための機能 でいいの?100点?
550 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:53:10 ] 2点
551 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 12:54:15 ] 配列は配列だろ。それ以上でもそれ以下でもない。
552 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 13:02:59 ] 配列とは(多くて)名前を付けるのが極度に難しかったり不合理(数字との対応性が高い)だったりする対象に遭遇したプログラマにはからわ れたコンパイラの便宜でつ
553 名前:デフォルトの名無しさん [2009/11/09(月) 13:14:59 ] 単に数が多くて名前をつけるのが大変だからって理由で配列を使うと、 配列の添え字と使用目的を関連づけるのにマクロを使う羽目になるので たくさんの変数名をつけるのがマクロ名になるだけで利点がないばかりか マクロであるがゆえの欠点も抱え込むことになる 正解は >>552 が2番目に挙げた「数字との対応性」
554 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 13:25:53 ] ダイクストラ/ホーア/ダール共著「構造化プログラミング」の データ構造化序論を読むべし
555 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 13:29:51 ] 変数の種類が配列じゃなく10万種類とか100万種類ある プログラムを作ってみて、如何にコンパイラが名前のルックアップ 処理に時間をかけているかがわかる筈。
556 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 13:33:01 ] 添字付き変数
557 名前:デフォルトの名無しさん [2009/11/09(月) 14:13:32 ] >>555 ふつーにありそうだが? float real; float imag; //... が10万とか100万とかある状況下で、 これでどうやって名前のルックアップが軽くできるんだ? float array[100000]; #define real 0 #define imag 1 //...
558 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:21:08 ] グローバル変数の数が配列を一つのものと数えて10万個ある プログラムってそうはないだろw
559 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:28:53 ] struct{ double B,W,H; int born; int age int virgine; }JK00001,JK00002,JK000003,.............JK100000; とするのか struct{ double B,W,H; int born; int age; int virgine; }JK[100000]; とするのか、同じことをするのでもずいぶんと違うんだろな
560 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:42:30 ] >>557 プリプロセッサのシンボルルックアップは重くなるが コンパイラのシンボルルックアップは軽くなるんじゃないか?
561 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 14:51:42 ] それは
562 名前:デフォルトの名無しさん [2009/11/09(月) 15:25:01 ] >>558 そーだよな 「名前のルックアップ」でいちいち10万エントリをサーチせずに済むようにローカル化するよな プログラム全体で何万エントリあろうが1時点でのルックアップ範囲は狭く済むようにね # ルックアップは何もコンパイラだけじゃなく PG 自身もやるわけで >>559 いや、ここで論じている問題は struct{ double a[3]; int b[3]; }; #define B 0 #define W 1 #define H 2 #define born 0 #define age 1 #define virgine 2 という配列の用法の是非だる?
563 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 15:28:01 ] >>562 オレは #define より enum を使うぜ
564 名前:デフォルトの名無しさん [2009/11/09(月) 16:23:57 ] >>563 列挙子の数が配列のサイズを超えたかどうか、どうやって調べる?
565 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:37:39 ] 列挙子の最後にMAXなんちゃらってのを追加して sizeof(配列)と比較する
566 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:03:52 ] 配列の利点はメモリ上に連続して取られることだろ つまり、配列は連続領域を(静的に)確保及び参照するときに使う複合データ型 規格書に書いてあることでも書いたら100点もらえるんじゃないの ISO/IEC 9899:1999 (E) 6.2.5 Types 20 ― An array type describes a contiguously allocated nonempty set of objects with a particular member object type, called the element type.36) Array types are characterized by their element type and by the number of elements in the array. An array type is said to be derived from its element type, and if its element type is T , the array type is sometimes called ‘‘array of T ’’. The construction of an array type from an element type is called ‘‘array type derivation’’. C99でごめんねごめんね
567 名前:デフォルトの名無しさん [2009/11/09(月) 18:36:16 ] >>565 >>566 列挙子を増やすとサイズが自動的に増加する配列があったらなあ・・・ って要求にほぼ答えられる機能があるわけだが、それでも配列でと頑張ると 別に B へのポインタに +1 で W にアクセスなんかできなくていいけど、 レジスタ割付くらい可能なところでは当然やって欲しいなあ・・・ って要求は諦めることになるよな
568 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:38:25 ] int *p; DisplayInside_of_TheVariables = p; DisplayInside_of_TheVariables = *p; これは何がどう違うのですか。
569 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:42:09 ] 36)オブジェクト型は不完全型を含まないので,不完全型の配列は作ることが出来ない。
570 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 18:44:19 ] >>568 上はint*型の代入で下はint型の代入
571 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 22:51:58 ] >>567 こんなんでどや? gcc でならコンパイルできるぞ #include <stdio.h> enum{HOGE0, HOGE1, HOGE2, HOGE_MAX}; int main(void){ int i, a[HOGE_MAX]; for(i=0;i<HOGE_MAX;i++) a[i]=i; printf("%d\n", a[HOGE_MAX-1]); return 0; }
572 名前:デフォルトの名無しさん [2009/11/09(月) 23:10:56 ] >>571 その HOGE_MAX ってのを自動というかどうかだが、 その例で HOGE_MAX としている列挙子がいかなる識別子とも干渉しないことを担保する 普遍的な方法論はあるのか?
573 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 23:56:07 ] >>572 そんなのある訳無いじゃん 強いて言うなら命名規則で頑張る
574 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 00:04:53 ] ゲーツェーツェー
575 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 00:09:31 ] X Windows Systemに代表されるようにプレフィックスをつけて長い関数名になるんですね、わかります そんな僕は、JPEGやCore Foundationの書き方をリスペクトしている
576 名前:デフォルトの名無しさん [2009/11/10(火) 00:27:40 ] 自分の揚げ足を取ることになるが「いかなる識別子」というからにはマクロ名まで含んでしまうな #define a b int a, b; //oops! ・・・て、そういう意図じゃなくwww enum hage {HOGE0, HOGE1, HOGE2}; int a[sizeof(enum hage)]; で自動的に int a[3]; になるような方法ね 仮に HOGE3 を追加する場合、HOGE3 自身と HOGE0, HOGE1, HOGE2 との間に どんな関係を保証させればよいのか、さらに保証させなくてよい(保証させてはいけない)のか、 によって色んな構文・機能を使い分けるわけだよな そこで配列という選択に至る、なるべく仮定の少ない例を聞いているわけだ
577 名前:デフォルトの名無しさん [2009/11/10(火) 00:41:32 ] あきらめたらどう