C言語の例とは? わかりやすく解説

C言語の例

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/10/23 06:34 UTC 版)

ループ展開」の記事における「C言語の例」の解説

次の例はC言語書かれ簡単なプログラム動的ループ展開したものである。アセンブリ言語の上掲の例とは異なり変数 (i)配列要素を指すのに使われているため、コンパイラポインタ/インデックス計算コード生成することになる。最大限最適化するには、全てのインデックス指定定数置き換えなければならない。 #include#define TOGETHER (8)int main(void){ int i = 0; int entries = 50; /* 総処理回数 */ int repeat; /* ループ回数 */ int left = 0; /* 余り後で処理する) */ /* 要素数がBLOCKSIZEで割り切れないとしても、 */ /* 処理の大部分whileループで行うように、反復回数を得る。 */ repeat = (entries / TOGETHER); /* 反復回数 */ left = (entries % TOGETHER); /* 余り計算 */ /* 8回ぶんの処理を展開 */ while( repeat-- > 0 ) { printf("process(%d)\n", i ); printf("process(%d)\n", i + 1); printf("process(%d)\n", i + 2); printf("process(%d)\n", i + 3); printf("process(%d)\n", i + 4); printf("process(%d)\n", i + 5); printf("process(%d)\n", i + 6); printf("process(%d)\n", i + 7); /* インデックスまとめて更新 */ i += TOGETHER; } /* switch文使いcaseラベルジャンプすることで余り部分処理する。 */ /* フォールスルーにより、余りのぶんを全部処理する。 */ switch (left) { case 7 : printf("process(%d)\n", i + 6); case 6 : printf("process(%d)\n", i + 5); case 5 : printf("process(%d)\n", i + 4); case 4 : printf("process(%d)\n", i + 3); case 3 : printf("process(%d)\n", i + 2); case 2 : printf("process(%d)\n", i + 1); /* 余りが2の場合 */ case 1 : printf("process(%d)\n", i ); /* 余りが1の場合 */ case 0 : ; /* 割り切れ場合 */ }}

※この「C言語の例」の解説は、「ループ展開」の解説の一部です。
「C言語の例」を含む「ループ展開」の記事については、「ループ展開」の概要を参照ください。

ウィキペディア小見出し辞書の「C言語の例」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「C言語の例」の関連用語

C言語の例のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



C言語の例のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのループ展開 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS