1 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 22:34:33 ] C言語の入門者向け解説スレです。 ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 19 pc11.2ch.net/test/read.cgi/tech/1190342593/ 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 97代目 pc11.2ch.net/test/read.cgi/tech/1191937213/
413 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:30:01 ] 引数チェックが一番の使いどころだろ > assert()
414 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:34:02 ] >>413 へぇ、永遠のデバッグビルドか
415 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 09:58:07 ] >>414 sunも引数チェックにassert使えって言ってるよ。
416 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 10:40:38 ] それは引数を渡す方も一緒に開発してる時だろ 内部的なエラーでも無い限りNULLになる事はありえない前提
417 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:38:55 ] 自分で作ってるライブラリじゃなくても、仕様にNULLを渡した時の動作が書いてなかったら、 NULLを渡すなんてありえない。
418 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 16:10:15 ] 引数チェックはやって当然。
419 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 16:15:39 ] 両方書いておけばおk
420 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 16:20:57 ] ポインタで渡される引数のチェックって NULL比較?
421 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:39:12 ] mallocとかポインタがわけわかりません。 図とかでイメージしやすく解説してください
422 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:44:10 ] >>391 カリー化
423 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:45:58 ] >>421 本読め
424 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:46:25 ] mallocって char *str; /* 文字列のためのメモリを確保 */ str = (char *)malloc(100); こんな感じに書いてるけど char str[100] ってやった方が楽じゃん。なんでmallocなんて使うの?
425 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:49:17 ] >>391 型が分からなかったので適当に決めた int hoge_wrap(int *x, int *y, int *width, int *height){ int dummy=0; if(x==NULL) x=&dummy; if(y==NULL) y=&dummy; if(width==NULL) width=&dummy; if(height==NULL) height=&dummy; return hoge(x, y, width, height); }
426 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:50:10 ] >>424 必要ないなら無理して使わなくても良い物です
427 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:52:55 ] >>426 無理して使えるようになるためにおせーてよ 何か新天地が開けるかもしれないじゃん というか教えてくださいお願いしますガンダム見ませんから
428 名前:デフォルトの名無しさん [2007/10/27(土) 17:56:59 ] newやvectorつかえば十分 性能も変わらない
429 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:58:13 ] char型で考えるから分かりにくいことになる。
430 名前:デフォルトの名無しさん [2007/10/27(土) 18:00:08 ] char だと領域確保に制限がある new mallocは巨大なのが出来る
431 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:00:14 ] newやvectorがわからないっす
432 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:04:55 ] >>427 char array[100]; のかわりにchar *p; p=(char*)malloc(100);を使うとき 1.配列のサイズが未定のとき 実行時にしかか配列のサイズ(この場合100)がわからないとき 2..配列のサイズが大きすぎて内部変数として確保できないとき 外部変数を使うという手もある
433 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:05:28 ] ここって C++ ありだっけ?
434 名前:デフォルトの名無しさん [2007/10/27(土) 18:09:53 ] char型だと巨大配列を確保できない #include <iostream> #include <vector> using namespace std; #define N 10000000 main(){ int *x; x=new int[N]; vector<int> y; y.reserve(N); // char z[N];z[0]=1; for(int n=0;n<N;n++)x[n]=y[n]=1; printf("%d",x[0]);}
435 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:10:55 ] >>433 なし
436 名前:デフォルトの名無しさん [2007/10/27(土) 18:11:16 ] mallocとnewに性能の違いはなく、vectorはちょっと高性能でちょっと動作に負担がかかる
437 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:30:06 ] (ノ∀`) アチャー
438 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:58:41 ] >>418 状況による。 たまにいる、必ずやるってやつは素人。
439 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:23:20 ] >>424 配列サイズが分からなかったり、途中で増える可能性がある時に使う
440 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:35:21 ] >>438 やらないとLintに叱られます
441 名前:プリンがー mailto:aaa [2007/10/27(土) 19:55:12 ] 問題を解く時、まず問題を見て引数があるかないかってどうやって分かります?
442 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 20:02:57 ] 問題ってのが仕事上の問題なのか学校で先生に出された問題なのかによる
443 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 20:03:16 ] エスパー!! エスパー!!
444 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 20:07:27 ] >>440 そんなlintありません。
445 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 20:21:30 ] >>434 スタックサイズを増やせばおk ま、普通はポインタにして malloc するがな
446 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 20:37:47 ] >>424 char str[100] の[]の中に変数を入れるとコンパイルエラーになるが、 mallocだとそれができます。
447 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 20:42:54 ] コンパイラによってはエラーにならないけどな
448 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 20:55:01 ] C99
449 名前:プリンがー mailto:aaa [2007/10/27(土) 22:06:09 ] >>442 学校で先生に出された問題ってか演習問題とか
450 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:11:41 ] >>449 コンピュータじゃないんだから人間的に考えればいいと思うよ
451 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:16:35 ] 入力として必要なものは引数なんじゃね
452 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:19:56 ] 1 getchar() を用いて 1 文字入力を行い、Ctr+Z が入力されるまで次の処理を繰り返しなさい。 大文字、小文字に関係なく、アルファベットを入力した場合には、それぞれの入力した個数を数えなさい。 2. 1. の処理終了後、アルファベットをそれぞれ何個ずつ入力したか出力しなさい。 これなんですがどう頑張っても意味不明です・・・ ヒントとして ?入力アルファベットの個数を数えるカウンタは大きさ 26 の配列で用意。 最初に、配列の 26個の要素すべてを0クリアすること。 ?A〜Z、a〜z は ASCIIコードの 65〜90、97〜122 に該当することを考えれば、配列の何番目をカウントUP するかは計算で求められるはず。 実行結果 入力文字 14abcaaabccdzzgk(リターン) aabc147cab8cc3c(リターン) CTRL+Z(リターン) とすると a = ○○個 b = ○○個 c = ○○個 改行 d = ○○個 e = ○○個〜〜〜 と一覧を出力させたいんです。 とあるんですが、どう書いたらいいんでしょうか・・・('A` switch使ってみたりしたんですが、イマイチ意味がわからなくなってきました・・・。 ちなみに今まで習った事は、 if if else for while break continue goto 算術関数 strcpy等、 等の初歩的なことだけです。。。
453 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:22:10 ] >>452 宿題スレ行け
454 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:25:32 ] どこがわからないのかが分からないが 65-65は0 90-65は25 97-97は0 122-97は25 ってことじゃね
455 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:25:45 ] 今まで習った事の中にgotoがあるのが気になる・・・ 普通初心者にgotoは教えないだろ
456 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:25:56 ] >>152 宿題スレに行け……と言いたいところだがヒントをやろう 'a'-'a' == 0 'z'-'a' == 25 'A'-'A' == 0 'Z'-'A' == 25
457 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:29:12 ] goto嫌いな人ってbreakとかcontinueとかも嫌い?
458 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:30:44 ] goto が嫌いな理由は goto に過剰反応する人を呼ぶ事
459 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:33:50 ] gotoが嫌いというよりは、(gotoを)初心者に教えるのが嫌い
460 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:56:35 ] あーいえA=65とかで、考え方としては、 scanfで変数cに文字を入れた場合、変数cから65を引いた数、例えばAなら65で0となり、Cなら67で2となり、 配列a[26]の[]内をcとして、そこに+1づつカウントしていく というのはわかるんですが、 どう書いていいのかチンプンカンプンなんです・・・。 そもそもgetcharって1文字入力なのに演習問題の実行例には abcdddef14(return) afijjgjkk(return) CTRL+Zってなっててなんで文字列での入力になってるんだろうとか思ったり('A` ちなみにgotoは多段ループから強制的に抜けたい場合にのみ使ったほうがいいかもしれないけどオススメはできないとも書いてありました。
461 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:01:19 ] あ、ちょっと頑張って書いてみます。 なんとなくわかりかけたかも・・・? ちなみにC言語学んでからまだ5日目です('A`
462 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:03:27 ] getcharで一文字ずつ取り出す 意味のある文字はアルファベットとCTRL+Z。 それ以外の(return)とか数字とかは無視すればいいんじゃね? CTRL+Zはなんだっけ・・・EOT?
463 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:09:23 ] >>462 whileでのgetcharでのループから抜け出すための CTRL+Z=EOF っす。 a と入力して、画面に a = 1個 と入力させるのはかけるんですが、 abcと入力した場合は配列使うと思うんですが、まずそもそも getcharでabcの場合 while ((c = getchar()) != EOF) //cは配列 配列に入力 CTRL+Zを押すとwhile終了。 でc[]にc[0]=a c[1]=b c[2]=cとなる・・・の?あれ理解しかけてきました。 ずっとc[0]にabcとなると思ってました・・・。 文字列の場合はgetsになるんですね、このすぐ先に習う項目にgetsあってみてみたら文字列って書いてあってアッーって思いました。
464 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:10:57 ] 勘違いしてるっぽい
465 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:12:50 ] ・「abcと入力した場合」でもgetcharは「a」を入力した時点で抜けてくる ・c = getchar()のcは配列である必要ない のはず・・・
466 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:20:45 ] ナンダッテー! 見た目的には a と打ち込むだけでは エンターを押さない限り文字入力待機画面になってるんですけど、(上記問題の場合はwhileなので文字→エンター→入力待機→文字→エンター→入力待機となるのはわかります) 内部的には処理されているということですか? aだけ押す、エンターは押さない→画面には入力待機状態であるが、内部的には処理されている? ちょっとやってみまつ。
467 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:24:39 ] 内部的にどのタイミングで処理してても、変わらないんだが。
468 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:26:04 ] ということはgetcharでabcdefと入力した場合は aからfまで順に1つ1つ処理していくということになるんですか?
469 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:30:56 ] while ((c = getchar()) != EOF) { puts("なんか入力された\n"); }
470 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:34:00 ] エンターを押した時点で処理が開始されるが、文字列をまとめてじゃなくて一文字ずつ読み込む
471 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:35:44 ] #include <stdio.h> int main(void) { int c; while ((c = getchar()) != EOF) { printf("%d\n" ,c); } return 0; } 出力した結果、>>470 さんの言ったとおり、例えばAAA(リターン) の場合綺麗に65656510と表示されました! これで問題に取り組んでみたいと思います! ありがとうございます!!!
472 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:37:46 ] あれ?Enter待ちになるのか/(^o^)\ 引っ込んでようorz
473 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:40:34 ] いえいえ、協力してくれようとしてくれただけでも感謝感激雨霰です。 皆さん本当にありがとうございました。
474 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:41:46 ] 霰が霧に見えた orz
475 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 09:44:07 ] goto嫌いな人が do{}while(0) で break を使っているのを見て泣けた。
476 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 11:44:11 ] VisualStudio2008で作ったプログラムなんですが、 重複したシンボルがある(?)とか怒られてて困っています 原因がわかる方いませんか?おねがいします www.uploda.org/uporg1085799.zip.html 一応ファイルをうpしました
477 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 11:56:55 ] >>476 マルチうざい
478 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 13:19:04 ] >>476 どのシンボルが重複してるかまで表示されてるだろ? それが重複してるんだよ。
479 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 13:41:16 ] >>478 ありがとうございました。よく見たら書いてました。
480 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 15:03:31 ] 2バイト文字の扱いがよくわからないです 例えば、配列の中身を順に表示させようと思っても文字化けします array[11] = {"しーげんご"}; Shift-Jisとかに変換してから使うんですか?
481 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 15:17:35 ] >>480 > 配列の中身を順に・・・ 1バイトずつの表示はできない。
482 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 15:30:49 ] >>481 そうなんですか・・・ じゃあ半角英字みたいに平仮名でも文字コードに数字を足して 次の文字へ!みたいな処理はできますか
483 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 15:54:37 ] なんの文字コードを使っているのかわからないが、 いちど使用している文字コードの文字コード表を見ることを薦める。 ちなもに、S-JISでは、「あ」「い」「う」は,それぞれ,0x82a0, 0x82a2, 0x82a4
484 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:02:41 ] >>483 調べてみたんですが、SーJISで「あ」を表示させるには %cを2回と0x82,0xa0をつかって表示させると書いてありました。 ほかの表示方法は見つけられなかったのですが、ありますか?
485 名前:452 mailto:sage [2007/10/28(日) 17:12:30 ] 無事できました! が、次の問題で一点引っかかる事が('A` 終了条件eまたはEってどういう風に記述するんですか? while(gets(str) != ○○) の○○にeかEを入力した場合で終了という風にしたいのですが・・・。 'e' とか'E'は駄目みたいです。
486 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:13:57 ] なんでgetsになってんの?
487 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:17:56 ] あ、ごめんなさい。 習う順番でgetchar+putchar → gets+putsという風になってて 問題が、 gets() を用いて、テストの点数を文字列として入力しなさい。 上記処理中、eかEを入力した場合は下記処理をスキップさせ、内容を出力せよ っていう問題なんです。 考え方としては、今まで習ってきたように ○○が入力されるまでは処理を続けるというwhileループでの処理だと思うんですが・・・。
488 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:21:55 ] 文字列の中に'e'か'E'があるかどうかをチェックする
489 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:33:29 ] ありがとうございます>< int変数aというものを新たに用意し、 getsで入力した中に、a = 'e' か a='E' での判定を入れたら無事とおりました><
490 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 19:18:39 ] どうしてもwhile内で済ませたかったら、 while(gets(str)[0] == 'E') とか? 試してないけど NULLが返ってきた時に危険だなw
491 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 19:42:10 ] ttp://a-draw.com/contents/uploader2/src/up0121.txt できたました! こんな長い(すごい短いんだろうけど・・・)の書いたの初めてです・・・。
492 名前:デフォルトの名無しさん [2007/10/28(日) 19:47:06 ] 3つの整数値を読み込んでそれらの値がすべて等しければ「3つの値は等しいです」と、 どれか2つの値が等しければ「2つの値が等しいです」と、そうでなければ「3つの値が異なります」と表示するプログラムをつくりなさい #include <stdio.h> int main(void) { int n1,n2,n3; printf("整数A"); scanf("%d", &n1); printf("整数B"); scanf("%d", &n2); printf("整数C"); scanf("%d", &n3); if(n1==n2==n3)printf("3つの値は等しいです"); else if(n1==(n2||n3)) printf("2つの値は等しいです"); else if(n2==(n1||n3)) printf("2つの値は等しいです"); else if(n3==(n2||n1)) printf("2つの値は等しいです"); else printf("3つの値は異なります"); return(0); } このように組んで整数Aに1整数Bに2整数Cに3を代入すると2つの値は等しいですと表示されてしまいます 問題点を教えてください><
493 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 19:53:17 ] n1==n2==n3 は n1==(n2==n3) で、意味が違う。 n2||n3 n2||n1 n1||n3 は、それぞれ両方0のとき0、それ以外だと1になる。
494 名前:デフォルトの名無しさん [2007/10/28(日) 19:55:04 ] #include <stdio.h> int main(void) { int n1,n2,n3,k=0; printf("整数A "); scanf("%d", &n1); printf("整数B "); scanf("%d", &n2); printf("整数C "); scanf("%d", &n3); if(n1==n2)k++; if(n1==n3)k++; if(n2==n3)k++; if(k==3)printf("3つの値は等しいです"); else if(k==1)printf("2つの値は等しいです"); else printf("3つの値は異なります"); }
495 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 19:56:48 ] 問題点を聞かれてるのに、俺プログラムを自慢されても困る
496 名前:492 [2007/10/28(日) 20:05:56 ] >>493-494 ありがとうございました。||の使い方をかんちがいしていました。。。
497 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 20:33:46 ] >>491 なんか無駄が多い気がするが、まあそれは眼をつむっておこう だがgetsの入力先配列が要素数2てのは……誤入力もあるだろうし、せめて256くらい確保した方が良い気がする というか、要素数2だとヌル文字入らないじゃん(というか100も入らないし) atoiってヌル文字入らないと変な動作になることあるはず
498 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:06:24 ] >>497 むむ、 getsでの取得は 例えば入力が50なら、charだから配列[0]に50 で配列[1]に\0が入る=2個で足りるってことじゃないですか? もしgetsでの取得変数がintの場合なら点数最大100(つまり3桁)は最低でも[4]になるのはわかります。 まぁでも、教えてもらっている人にも、配列は無駄でもいいから多く取った方がいいと教わりましたので、多くとる事を、この先心がけていきます! ありがとうございました!
499 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:21:49 ] ごめんなさいボクが馬鹿でした。 ためしにcharでの変数aに入力したものを、出力させるのかいてみて a[0]をやったら、最初の1文字しか出力されませんでした。 本当にありがとうございました。
500 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 22:56:33 ] int *foo int* foo の違いを教えてください>< 今までint *foo しか使ってなくて いきなりint* fooが出てきてわけわかりません><
501 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 22:57:42 ] >>500 次は int * foo だ
502 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:00:18 ] 宣言時のアヌスの位置くらい自由にさせてあげてください
503 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:03:21 ] いまだにforの無限ループを見ると悲しくなる( ; ; )
504 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:04:11 ] >>501 そんなのもあるのですか ソース解読してる途中にこんなの出てきてわけわからんのです すいませn助けてください。ほんと 何でグぐれ場いいのかもわからなくて すんません、マジで
505 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:07:39 ] >>504 int *foo; int* foo; int * foo; は全部一緒
506 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:09:54 ] ありがとうございます なんでこんな風に書き方分けてるのか
507 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:14:35 ] *は型名にも変数名にも使えないから問題ない
508 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:35:53 ] 初歩的な質問なのですが for(int i = size >> 1 ; ; i >>= 1) というループがあったのですが size >> 1 や i >>= 1 というのはどういう意味なのですか?
509 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:37:41 ] int*foo;もいけるんじゃない?
510 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:40:19 ] >>508 ビットシフト
511 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:44:55 ] >>508 のだとiをビットシフトするとどうなるんでしょう あとforの2つ目のところが空白なのもわけがわかりません
512 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:46:35 ] i >>= 1 すると i の各ビットが右へ 1 桁ずつずれる forの2つめが空白の場合は条件なしの繰り返し=無限ループ
513 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:53:43 ] >>511 iが10(2進数で1010)だとすると5(101)になる 5だとすると2(10)になる。その次はもう予想できるよな?