「C言語/制御文」の版間の差分
削除された内容 追加された内容
→分岐文: レイアウト調整 |
goto文を後回しに。BASICじゃないんだから。 |
||
641 行
</syntaxhighlight>
== 分岐文 ==
=== break文 ===
<ref>『JISX3010:2003』p.105「6.8.6.3 break文」</ref>
756 ⟶ 679行目:
また、break文は、break文を含む最も内側のスイッチ本体またはループ本体に対応する。
=== for文の中のif文のbreak ===
[[File:Destination Break Programming in If sentence in For sentence.svg|thumb|600px|]]
図のようにfor文の中にif文があり、そのif文のブロック内に break; がある場合、
breakによって抜け出す先は、if文のひとつ上にあるfor文の終了直後の地点です。
for文が2つ以上ある場合、break文で一気に複数のfor文を抜け出すことは '''できない''' です。
{{-}}
=== return文 ===
<ref>『JISX3010:2003』p.103「6.8.6.4 return文」</ref>
791 ⟶ 723行目:
returnの意味は、英語では、よく「戻ってくる」「帰ってくる」の意味で使われたり、借りたものが返って来る、借りたものを返すなどの意味で使われこともありますが、他にも質問や意見などに「言い返す」などの意味があったり、投資などで利益を返すという意味もあります。(※ ジーニアス英和辞典にちゃんとそう書いてもある。)
=== continue文 ===
<ref>『JISX3010:2003』p.104「6.8.6.2 continue文」</ref>
continue文(コニュティニューぶん)とは、分岐文の内の1つであり、ループ本体の中で使われ、ループ本体の終わりへ制御を移す。
つまり、ただちに制御式が実行され、それからループが繰り返される。
ループ本体の終わりとはcontinue文を含む最も内側のループ本体の最後の文の直後である。
continue文の記述は次のようになっている。
* continue文
<syntaxhighlight lang="C">
continue;
</syntaxhighlight>
<syntaxhighlight lang="C">
//例 continue文の使用例
#include <stdio.h>
int main(void)
{
//1から100までの整数の中で、3の倍数と4の倍数以外を表示する。
int i;
for(i=1;i<=100;++i){
if(i%3==0||i%4==0)continue;
printf("%d ",i);
}
}
</syntaxhighlight>
=== goto文 ===
<ref>『JISX3010:2003』p.103「6.8.6.1 goto文」</ref>
goto文とは、分岐文の内の1つであり、指定するラベルへ制御を移す。
goto文は、識別子が指すラベルへ制御を移す。
そのラベルはgoto文を含む関数内になければならない(関数有効範囲)。<ref>『JISX3010:2003』p.21「6.2.1 識別子の有効範囲」</ref>
<pre>
goto文の使用は一般には推奨されません。
理由は構造を把握しづらいコード(スパゲティコード)となるからです。
また、goto文は多重にネストされたスイッチやループから抜け出すために使われることがありますが、
それも関数化してreturn文で抜け出すように書き換えることができます。
</pre>
goto文及びラベルの記述は次のようになっている。
* goto文
<syntaxhighlight lang="C">
goto 識別子;
</syntaxhighlight>
* ラベル
<syntaxhighlight lang="C">
識別子:
</syntaxhighlight>
<syntaxhighlight lang="C">
// 例 goto文の使用例
#include <stdio.h>
int main(void)
{
int x,y;
for(y=1;y<=9;++y){
for(x=1;x<=9;++x){
if(y*x>=50)goto exit_loop;
}
}
exit_loop:
printf("九九の表で、最初に50以上になるのは%d×%d。\n", y, x);
}
</syntaxhighlight>
== 論理型 ==
|