- 1 名前:デフォルトの名無しさん [2012/01/13(金) 22:05:06.14 ]
- C言語の*入門者*向け解説スレッドです。
★前スレ C言語なら俺に聞け(入門編)Part 94 toro.2ch.net/test/read.cgi/tech/1324648274/ ★過去スレ 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++の宿題片付けます 155代目 toro.2ch.net/test/read.cgi/tech/1325685876/ ★C++言語については避けてください。C++対応明記スレへどうぞ ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 長くなりそうなコードはcodepadに貼り付けてもいいでしょう codepad.org/
- 385 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 08:21:41.81 ]
- コーディングスタイルはそれぞれでも、
1関数は百行以内で頼みたい。
- 386 名前:384 mailto:sage [2012/01/19(木) 08:25:52.23 ]
- ソース読み間違えたorz
- 387 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 10:52:47.12 ]
- >>382
ぱっと見、抽象型プログラミングっぽいけど、よく見たらファイル一個につき selfが一個だな。 あんまり利点を感じない。
- 388 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 14:07:44.90 ]
- いったい検証てなんなんだ?
意味がわからんのだが。
- 389 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 15:18:28.05 ]
- 査読してほしいってことぐらいわかろう
- 390 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 15:50:28.51 ]
- 何がしたいコードなのかもわからずに査読も何もないだろう。
ぱっと見、OOPを噂で聞いたくらいで何かそういうことを やろうとしたような残念なコードにしか見えないんだが。
- 391 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 17:34:27.20 ]
- ネバーネバーネバーネバーギブアップって、
! ! ! ! give_up という事で、 give_upがtrueなら ! ! ! ! give_up もtrueという事で ギブアップなんですよね?
- 392 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 17:51:02.21 ]
- give_up || !give_up
だよ
- 393 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 18:37:49.17 ]
- 番号を選択し、選択した番号によって処理を変えたいのですが、
[範囲外の数値が入力されました。]としか表示されません 番号通りの処理をさせるにはどうしたらいいのでしょうか codepad.org/IOuFqtMb
- 394 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 18:44:58.18 ]
- >>393
- scanf("%d", menu); + scanf("%d", &menu);
- 395 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 18:51:32.77 ]
- >>394
有難うございます 早速修正します
- 396 名前:デフォルトの名無しさん [2012/01/19(木) 20:51:59.13 ]
- コンパイラが宣言された配列に対して実際に確保するメモリ領域の大きさを決める基準ってなに?
- 397 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 21:00:03.22 ]
- >>396
配列のサイズ以外に何かあるの?
- 398 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 21:25:55.65 ]
- char は1バイト
int は4バイト(処理系によりけり) long は8バイト(処理系によりけり) とかを聞きたいんじゃね?
- 399 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 21:44:19.30 ]
- コンパイラの仕様による
としか
- 400 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 21:48:02.12 ]
- char a[6];
が8バイト分確保するとか。 コンパイラ依存だろうが。
- 401 名前:396 [2012/01/19(木) 22:24:08.73 ]
- すまん、要素数が1の時に1byte、2〜16で16byte、17〜32で32byte、33〜64で64byteっていう実験結果が得られたのを前提に頼む。
- 402 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 22:32:17.25 ]
- >>401
char配列?
- 403 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 22:32:39.53 ]
- >>401
>すまん、要素数が1の時に1byte、2〜16で16byte、17〜32で32byte、33〜64で64byteっていう実験結果が得られたのを前提に頼む。 そんなのじゃなく、実際の宣言部分を見せろ。
- 404 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 22:37:07.14 ]
- >>401
OSやコンパリラとか書かないと
- 405 名前:396 [2012/01/19(木) 22:56:02.82 ]
- char a[i];
コンパイラはgcc
- 406 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 22:57:55.71 ]
- >>381
俺の超能力をもってしても、お前のレスは意味不明。
- 407 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:02:24.89 ]
- >>401
別に普通のことだろ。 何が疑問なんだ?
- 408 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:03:38.25 ]
- プラグマとかコンパイルオプションで変えられるっしょ
- 409 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:05:06.72 ]
- >>405
とりあえず↓だと #include<stdio.h> int main(int argc, char **argv) { char a1[1]; char a2[2]; char a17[17]; char a33[33]; printf("sizeof(a1) = %d\n", sizeof(a1)); printf("sizeof(a2) = %d\n", sizeof(a2)); printf("sizeof(a17) = %d\n", sizeof(a17)); printf("sizeof(a33) = %d\n", sizeof(a33)); return 0; } 実行結果 こうなる。 sizeof(a1) = 1 sizeof(a2) = 2 sizeof(a17) = 17 sizeof(a33) = 33 gccは $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-pc-cygwin/4.5.3/lto-wrapper.exe Target: i686-pc-cygwin --中略-- Thread model: posix gcc version 4.5.3 (GCC)
- 410 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:07:02.20 ]
- >>405
>char a[i]; 要素数が変数になっているのが気になるな。 情報小出しにしないで、>401でどうしてそう判断したのか、 コードを出しな。
- 411 名前:デフォルトの名無しさん [2012/01/19(木) 23:25:53.81 ]
- >>410
#include <stdio.h> #define i 1 int main(void) { char a[i],b[i],c[i]; printf("a:%p\n",a); printf("b:%p\n",b); printf("c:%p\n",c); }
- 412 名前:デフォルトの名無しさん [2012/01/19(木) 23:27:23.14 ]
- >要素数が変数
>>405がやってるのは、なに言語?
- 413 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:27:53.71 ]
- >>411
そういう書き方、気持ち悪いと思う
- 414 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:28:00.33 ]
- どうせワード境界だのなんだのの話だろ?
- 415 名前:デフォルトの名無しさん [2012/01/19(木) 23:28:08.95 ]
- アドレス表示してなにがやりたいの?
- 416 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:42:07.25 ]
- >>411
環境によって、4の倍数のアドレスがアクセスが速いとか、奇数アドレスにアクセスできないとか あるから変数とかきっちり敷き詰めて置かれないことのほうが多い。
- 417 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:43:01.09 ]
- #include <stdio.h>
char a[XXX]; char b[1]; int main(){printf("%d ",b-a);return 0;} for XXX in 1 2 3 4 5 6 7 8 9 10; do gcc -DXXX=$XXX hoge.c; ./a.out; done 結果 1 2 3 4 5 6 7 8 9 10
- 418 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:44:02.24 ]
- >>405
配列の添字が変数のトキはとくべつなしょりになるよ
- 419 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:44:43.21 ]
- 構造体だと
#pragma pack(1) みたいな、隙間無く埋めろとか指定できるのもあるな。 こんなの使わないから忘れたけど。
- 420 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:45:13.81 ]
- >>417
a,bの順番にかくほされるとはかぎらないよ
- 421 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:53:00.39 ]
- 構造体は何にもしなくてもアドレス続いてるんじゃなかたけ?
例えば、 struct a{ long n; char c[4]; }; a.nの次のアドレスにa.c[0]が続いてるんじゃないの??
- 422 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:54:34.00 ]
- struct a{
char c[3]; long n; }; はどうなってるのかと考える?
- 423 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:54:42.23 ]
- いいえ
- 424 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:57:17.34 ]
- >>422
char c[3]がlongに合わせられるんでしょ? ちなみにlongは4バイトでw
- 425 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:58:17.42 ]
- 何を根拠にそう言ってるんだ?
- 426 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:00:03.47 ]
- >>421
隙間あいてることもあるよ。
- 427 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:01:02.85 ]
- >>424
>char c[3]がlongに合わせられるんでしょ? ×
- 428 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:03:08.82 ]
- なんとw
char c[3]の領域破壊したら、その下のlong nも壊れるんじゃないんだ
- 429 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:07:56.70 ]
- >>411
それは配列がどう配置されるかで、 >>396 >コンパイラが宣言された配列に対して実際に確保するメモリ領域の大きさを決める基準ってなに? の、配列に対して確保されるメモリ領域の大きさとは、話が変わってるぞ。 >>409で示したように、「配列に対して実際に確保するメモリ領域」の大きさは、char a[N]; ならNになっている。
- 430 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:17:02.14 ]
- 構造体のサイズとアライメント
ttp://www.g-ishihara.com/c_st_01.htm
- 431 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:43:40.33 ]
- double array[10][20]に対応するキャストってなんでしょうか?
よろしくお願いいたします。
- 432 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:46:33.99 ]
- ポインタと意味と斟酌すると、
double (*p)[20] = array;
- 433 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:56:51.62 ]
- ダブルポインタとかトリプルポインタってどういう時に使うの?
- 434 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 00:58:22.67 ]
- 使う時が来るまでほっといていいよ
- 435 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 01:00:02.56 ]
- >>433
とりあえずコマンドライン引数を使おうとすると、早速char **argvが出てくるな。
- 436 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 01:06:52.78 ]
- >>435
コマンドラインで char *argvしか使ったこと無いけどそれ何の意味があるの?
- 437 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 01:28:56.92 ]
- >>436
複数パラメータ時は?
- 438 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 06:52:37.88 ]
- >>436
>コマンドラインで char *argvしか使ったこと無いけどそれ何の意味があるの? コマンドライン引数はint argc, char **argvしかありえないが、処理系なに使っている?
- 439 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 06:53:40.58 ]
- 関数の中で引数の変数にポインタを設定するときとか
- 440 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 09:28:45.67 ]
- 引数の char *argv[] が実際には char **argv であることなんて
知らない人のが多いだろう。
- 441 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 09:33:20.81 ]
- あれは字句分解が面倒でのぅ
- 442 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 11:42:40.29 ]
- >>440
引数の場合同じことになるだけで、実際は前者だろ。
- 443 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:03:26.72 ]
- []が配列を渡しているように見えるからイカンのでは
- 444 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:09:20.92 ]
- atoi関数の、
ループ(・・・){ n = 10 * n + (s[i] - '0'); ・・・ } return n; この処理って何をやっているのですか>< iPhoneセミコロン打てない><
- 445 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:14:30.21 ]
- 卓上で手動ステップ実行やってみなさい
- 446 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:20:58.46 ]
- 2バイト文字のバイナリ化ってどうすれば出来ますか?
- 447 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:31:09.33 ]
- 1バイトの場合と一緒
- 448 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:45:13.57 ]
- >>444
ヒント: (s[i] - '0') この部分はs[i]の1文字から、数値を得ている s[i]がcharの'1'だとすると、'1'=0x31 '0'は0x30なので、0x31 - 0x30 から 数値として1を得る
- 449 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 13:25:11.24 ]
- >>444
>iPhoneセミコロン打てない>< 「日本語テンキー」を使っている状態だろうから、 左下の地球儀アイコンを押して「English(US)」にすればフルキーが出る。 そこで左下の「123」キーを押せば「;」キーが見える。
- 450 名前:デフォルトの名無しさん [2012/01/20(金) 15:09:21.28 ]
- 学校の課題で自分でプログラム作れって言われて、
グリコゲーム作ろうと思ったんだけど、うまく動作しないんだ。 助けてくれ。 エンドレスじゃんけん状態から抜け出せない・・・>< ↓みたいなプログラム作ったんだが。
- 451 名前:デフォルトの名無しさん [2012/01/20(金) 15:11:34.14 ]
- >>450です
プログラムです #include <stdio.h> #include <time.h> #include <stdlib.h> int main(void) { int you,cpu,kaidan; int y_position = 0; int c_position = 0; printf("グリコゲーム\n"); printf(“階段の数>>”); scanf(“ %d\n”,&kaidan);
- 452 名前:デフォルトの名無しさん [2012/01/20(金) 15:12:40.43 ]
- >>451の続きです
srand(time(NULL)); do { printf("最初はグー\n"); printf("\nじゃん!けん!\n"); do { printf("ポン!\n"); printf("グー:1 チョキ:2 パー:3 >>"); scanf("%d\n",&you); cpu = rand()%3 + 1; printf("cpu>>"); if(cpu == 1) printf("グー\n"); else if(cpu == 2) printf("チョキ\n"); else printf("パー\n"); } while(you == cpu);
- 453 名前:デフォルトの名無しさん [2012/01/20(金) 15:13:44.78 ]
- >>452の続きです
if (you == 1 && cpu == 2) { printf("you:「グ・リ・コ!」"); y_position = y_position + 3; printf("you>>%d段目\n",y_position); printf("cpu>>%d段目\n",c_position); } else if (you == 2 && cpu == 3) { printf("you:「チ・ア・ガ・ア・ル!」"); y_position = y_position + 5; printf("you>>%d段目\n",y_position); printf("cpu>>%d段目\n",c_position); } else if (you == 3 && cpu == 1) { printf("you:「パ・イ・ナ・ツ・プ・ル!」"); y_position = y_position + 6; printf("you>>%d段目\n",y_position); printf("cpu>>%d段目\n",c_position); }
- 454 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:15:02.09 ]
- >>450
宿題スレって知ってるか >>1嫁
- 455 名前:デフォルトの名無しさん [2012/01/20(金) 15:15:22.80 ]
- >>453の続きです
else if (cpu == 1 && you == 2) { printf("cpu:「グ・リ・コ!」"); c_position = c_position + 3; printf("you>>%d段目\n",y_position); printf("cpu>>%d段目\n",c_position); } else if (cpu == 2 && you == 3) { printf("cpu:「チ・ア・ガ・ア・ル!」"); c_position = c_position + 5; printf("you>>%d段目\n",y_position); printf("cpu>>%d段目\n",c_position); } else if (cpu == 3 && you == 1) { printf("cpu:「パ・イ・ナ・ツ・プ・ル!」"); c_position = c_position + 6; printf("you>>%d段目\n",y_position); printf("cpu>>%d段目\n",c_position); } }while((y_position < kaidan) && (c_position < kaidan));
- 456 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:16:33.71 ]
- >>451
とりあえずscanfに\nが入ってる時点でおかしい それ以上は宿題スレ行け
- 457 名前:デフォルトの名無しさん [2012/01/20(金) 15:16:48.40 ]
- >>454 すみません、2ちゃんねる初めて使うので知らなかったです。
そっちにいってみます
- 458 名前:デフォルトの名無しさん [2012/01/20(金) 15:18:18.73 ]
- >>456 ありがとうございます。いってきます。
- 459 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:24:18.77 ]
- 「チ・ア・ガ・ア・ル!」←なんだよこれ?
チ・ヨ・コ・レ・エ・ト!だろ?
- 460 名前:デフォルトの名無しさん [2012/01/20(金) 15:28:08.03 ]
- >>459 パイナップルも6文字なので
5文字か4文字の言葉にしようと思いました。 普通はチョコレートですよね
- 461 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:55:31.89 ]
- うちの地元ではチ・ン・チ・コ・オ・ル!だったよ
- 462 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 16:21:23.14 ]
- ちょこれいとに1票
- 463 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 16:29:03.16 ]
- ぬるぽに1票
- 464 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 16:29:39.62 ]
- ガッ
- 465 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 19:59:29.24 ]
- チョキは蝶野正洋
パーは橋本真也 グーはグレートムタ
- 466 名前: ◆QZaw55cn4c mailto:sage [2012/01/20(金) 21:34:22.22 ]
- だるまさんがころんだ
さんしろうがわらった げんごろうがもぐった かみふうせんがきえた ゆうらんせんがゆれた へんとうせんがはれた かめれおんのあかちゃん ちゃんぴおんのでかぱん あみにおんのぼうさん うちゅうせんがとんでく〜 www.youtube.com/watch?v=010MEVmjoVA
- 467 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 21:59:17.25 ]
- どこまでもうぜえなコイツ
- 468 名前: ◆QZaw55cn4c mailto:sage [2012/01/21(土) 00:46:36.37 ]
- >>467
相手にするなカス
- 469 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 01:23:37.04 ]
- 466 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
468 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん これが正しい対処法
- 470 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 01:41:15.32 ]
- 469 名前:あぼ〜ん[レスあぼ〜ん] 投稿日:あぼ〜ん
- 471 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 01:48:10.53 ]
- >>469
透明にしたほうがよくね?
- 472 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 01:50:55.03 ]
- このスレを開かないのが一番いいと思う。
- 473 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 02:35:27.45 ]
- いや、にちゃんなんか見ないのが・・・…...
- 474 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 12:49:08.28 ]
- 死ねばいいと思うよ・
- 475 名前:uy mailto:sage [2012/01/21(土) 13:08:01.48 ]
- 生まれてきてごめんなさい
- 476 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 14:15:20.40 ]
- あやまる前にやる事があるんじゃないか?
- 477 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 15:40:05.55 ]
- _____
.ni 7 / \ ご冥福をお祈りします l^l | | l ,/) / /・\ /・\ \ .n ', U ! レ' / |  ̄ ̄  ̄ ̄ | l^l.| | /) / 〈 | (_人_) | | U レ'//) ヽっ \ | / ノ / /´ ̄ ̄ ノ \_| \rニ | `ヽ l
- 478 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 15:49:56.91 ]
- 文字列を読み込んで判定すんのってどうやるのが1番いいんですか?
(厨房にわかるレベルでお願いします)
- 479 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 15:52:03.71 ]
- >>478
国語の勉強すりゃいい
- 480 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 15:52:06.95 ]
- 「判定」について
↓
- 481 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 15:55:40.81 ]
- 文字列を読み込んで?
- 482 名前:馬鹿で中2病な厨房 mailto:sage [2012/01/21(土) 15:58:40.18 ]
- 要するにriverと書き込むとmountainと出力されるプログラムが書きたいのです
- 483 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 16:08:44.71 ]
- >>482
strcmp()とか普通の方法じゃご不満なんですかね。 どうご不満とか書かないと、回答もないですよ。
- 484 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 16:49:03.21 ]
- >>482
#include <stdio.h> #include <string.h> void main(){ char buf[20],*p; fgets(buf,20,stdin); if((p=strchr(buf,'\n'))!=NULL)*p='\0'; if(strcmp("river",buf)==0)puts("mountain"); }
- 485 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 16:51:13.88 ]
- 答えられる頭のない奴は黙ってたほうがいいよ
|

|