「C言語/制御文」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
標準ライブラリ関数を「命令」としていたので「関数」に訂正(JISX3010で命令としていないことを確認)。
13 行
のように記述される。
 
C言語では、「もし変数aが4だったら、変数gには15を代入しなさい。」のように、条件分岐は命令関数文として扱われる。
 
条件が満たされる場合のことを'''真'''(しん)という。条件が満たされない場合のことを'''偽'''(ぎ)という。
167 行
if文には、if形式、if-else形式の2通りの形式があり、またそれらを組み合わせてもよい。
 
なお、WindowsのVisual C系のコンパイラではscanfが使えなく、上記のコードのままではエラーになるので、かわりにscanf_sという命令関数を使用します。
 
<syntaxhighlight lang="cpp">
232 行
</syntaxhighlight>
 
WindowsのVisual C系コンパイラでは、scanfが利用できないので上記のコードはエラーになり利用できません。Visual C では、代わりに scanf_s という命令関数を使用します。
 
<syntaxhighlight lang="cpp">
352 行
 
たとえば
:a=1a==1なら、命令m1を実行
:a=2a==2なら、命令m2を実行
:a=3a==3なら、命令m3を実行
:a=4a==4なら、命令m4を実行
(以下略)
 
364 行
(イメージ)
switch(a)
case 1: 命令m1 ; break ;
case 2: 命令m2 ; break ;
case 3: 命令m3 ; break ;
case 4: 命令m4 ; break ;
(以下略)
 
みたいのような記法になります。
 
まず、実行したい命令関数の前に、それぞれcaseというラベルをつけます。
 
パソコンがswitch文に遭遇したときに、どのcaseに移動するかを決めます。
384 行
 
switch
:case 1: 命令m1 ;
:case 2: 命令m2 ;
:case 3: 命令m3 ;
:case 4: 命令m4 ;
(以下略)
 
というコードなら、もしa=2なら、実行されるのは、命令m2だけでなく、さらに命令m3や命令m4も実行してしまいます。
 
このような仕組み(つまりbreak文がないかぎり、次の命令関数を実行してしまう)のことを'''フォールスルー'''と呼びます。
 
 
399 行
単に、昔のC言語の開発者が、こういう仕組みで作ったままのものが、いまだに残っているだけです。
 
ですから、ほかのプログラム言語では、switch文においてフォールスルー的な動作が廃止されている場合もあります。たとえばグーグルの開発した「Go言語」というプログラム言語では、原則的にフォールスルーは行わないようになっており、例外的に現在実行中のcaseの下にある次のcaseを実行したい場合にだけ「fallthrough」という命令関数を付け加える、という仕組みです。(もちろんC言語には「fallthrough」命令関数はない。)
 
ともかく、C言語のフォールスルーを原則とする仕組みは、単なるローカル・ルールですので、悩む必要はありません。