== は、両辺が等しいときに1を、等しくないときに0を返す演算子です。(註)
C
1#include <stdio.h>
2
3int main(void) {
4 printf("%d\n", 42 == 42);
5 printf("%d\n", 42 == 0);
6
7 return 0;
8}
実行結果 Wandbox
if文ではその比較結果を利用しているにすぎず、+ とか * と言った他の二項演算子と変わりありません。
有用かどうかは別として、実際に次のようなコードを書くことができます。
C
1#include <stdio.h>
2
3int main(void) {
4 if(1 + 2) { // 0以外の数値は真値
5 printf("1 + 2\n");
6 }
7 if(-1 + 1) { // 0は偽値
8 printf("-1 + 1\n");
9 }
10
11 return 0;
12}
実行結果 Wandbox
註:
C++においては返り値がbool型になりますが、
intへの型昇格の結果、true/false がそれぞれ 1/0 になることが保証されています。
the type bool can be converted to int with the value false becoming 0 and true becoming 1.
引用元: cppreference.com - Implicit conversions
ご提示のコードについて
int a,b,c;
...
a = ( b == c ) // ←?????
== の比較結果をaに代入しているだけです。1あるいは0が代入されます。
おまけ
初心者がやりがちなミスは、== を = に取り違えることです。
= は、左辺に右辺の値を代入した上で、その値を返す演算子です。
さて、次のコードの実行結果が想像できるでしょうか。
C
1int a;
2if(a = 1) {
3 printf("a = 1\n");
4}
5if(a = 0) {
6 printf("a = 0\n");
7}
原因を知っていればミスが減ります。ぜひ考えてみてください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/06 15:00
2019/01/06 15:03
2019/01/06 15:23