If ... CのElseステートメントの説明

条件付きコードフローは、特定の条件に基づいてコードの動作を変更する機能です。このような状況では、ifステートメントを使用できます。

このifステートメントは、特定の条件または式に基づいて決定を下すため、意思決定ステートメントとも呼ばれます。ifステートメント内のコードブロックが実行され、条件がtrueと評価されます。ただし、条件がfalseと評価された場合、中括弧内のコードはスキップされ、ifステートメントの後のコードが実行されます。

ifステートメントの構文

if (testCondition) { // statements }

簡単な例

この動作の例を見てみましょう。

#include  #include  int main(void) { if(true) { printf("Statement is True!\n"); } return 0; }

出力:

Statement is True!

ifステートメントの括弧内のコードがtrueの場合、中括弧内のすべてが実行されます。この場合、trueはtrueと評価されるため、コードはprintf関数を実行します。

if..else ステートメント

if...else括弧内のコード場合の文、if文が真である、その括弧内のコードが実行されます。ただし、括弧内のステートメントがfalseの場合、ステートメントの括弧内のすべてのコードelseが代わりに実行されます。

もちろん、上記の例は、true常にtrueと評価されるため、この場合はあまり役に立ちません。もう少し実用的なものがあります:

#include  int main(void) { int n = 2; if(n == 3) { // comparing n with 3 printf("Statement is True!\n"); } else { // if the first condition is not true, come to this block of code printf("Statement is False!\n"); } return 0; }

出力:

Statement is False!

ここにはいくつかの重要な違いがあります。まず、stdbool.h含まれていません。最初の例のようにとが使用されていないのでtrue、それfalseは問題ありません。Cでは、他のプログラミング言語のように、あなたはむしろブール値使用するよりも、trueまたはfalseに評価ステートメントを使用することができtrueたりfalse、直接に。

また、ifステートメントの括弧内の条件に注意してくださいn == 3。この条件は比較さnれ、数値3==は比較演算子であり、Cのいくつかの比較演算の1つです。

ネスト if...else

このif...elseステートメントでは、2つの可能性から選択することができます。ただし、3つ以上の可能性から選択する必要がある場合もあります。

たとえば、数学の符号関数は、引数がゼロ未満の場合は-1を返し、引数がゼロより大きい場合は+1を返し、引数がゼロの場合はゼロを返します。

次のコードは、この関数を実装しています。

if (x < 0) sign = -1; else if (x == 0) sign = 0; else sign = 1;

ご覧のとおり、2番目のif...elseステートメントはelse最初のステートメント内にネストされていますif..else

xが0未満の場合、はsign-1に設定されます。ただし、xが0以上の場合、2番目のif...elseステートメントが実行されます。そこならば、xISが0に等しい、signまた0に設定されている。しかし場合はx0よりも大きい場合、sign代わりに1に設定されています。

if...else初心者は、ネストされたステートメントではなく、ifステートメントの文字列を使用することがよくあります。

if (x  0) { sign = 1; }

これは機能sign = ...しますが、の値に応じて、割り当てステートメント()の1つだけが実行されることを意図していることが不明確であるため、お勧めしませんx。また、非効率的です。コードが実行されるたびに、1つまたは2つである必要がなくても、3つの条件すべてがテストされます。

else ... ifステートメント

if...elseステートメントは、一連のifステートメントの代替です。次のことを考慮してください。

#include  int main(void) { int n = 5; if(n == 5) { printf("n is equal to 5!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }

出力:

n is equal to 5!

ifステートメントの条件がfalseと評価された場合、ステートメントの条件else...ifがチェックされます。その条件がtrueと評価された場合、else...ifステートメントの中括弧内のコードが実行されます。

比較演算子

オペレーター名使用法結果
に等しいa == baが等しい場合はtrue b、それ以外の場合はfalse
等しくないa != bTrue if a is not equal to b, false otherwise
Greater Thana > bTrue if a is greater than b, false otherwise
Greater Than or Equal Toa >= bTrue if a is greater than or equal to b, false otherwise
Less Thana < bTrue if a is less than b, false otherwise
Less Than or Equal Toa <= bTrue if a is less than or equal to b, false otherwise

Logical Operators

We might want a bit of code to run if something is not true, or if two things are true. For that we have logical operators:

Operator nameUsageResult
Not (!)!(a == 3)True if a is not equal to 3
And (&&)a == 3 && b == 6True if a is equal to 3 andb is equal to 6
Or (||)a == 2 || b == 4True if a is equal to 2 orb is equal to 4

For example:

#include  int main(void) { int n = 5; int m = 10; if(n > m || n == 15) { printf("Either n is greater than m, or n is equal to 15\n"); } else if( n == 5 && m == 10 ) { printf("n is equal to 5 and m is equal to 10!\n"); } else if ( !(n == 6)) { printf("It is not true that n is equal to 6!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }

Output:

n is equal to 5 and m is equal to 10!

An important note about C comparisons

While we mentioned earlier that each comparison is checking if something is true or false, but that's only half true. C is very light and close to the hardware it's running on. With hardware it's easy to check if something is 0 or false, but anything else is much more difficult.

Instead it's much more accurate to say that the comparisons are really checking if something is 0 / false, or if it is any other value.

For example, his if statement is true and valid:

if(12452) { printf("This is true!\n") }

By design, 0 is false, and by convention, 1 is true. In fact, here’s a look at the stdbool.h library:

#define false 0 #define true 1

While there's a bit more to it, this is the core of how booleans work and how the library operates. These two lines instruct the compiler to replace the word false with 0, and true with 1.