Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

  1. トップページ
  2. Swift入門編 - 真偽値と比較演算子について

真偽値と比較演算子について

みなさまどうもおはこんばんにちは。いかがお過ごしでしょうか。

続きまして『真偽値』(しんぎち)とか『比較演算子』(ひかくえんざんし)についてやっていきましょう。

『真偽値』は『真理値』(しんりち)、『論理値』(ろんりち)とも呼ばれますね。著者は『真偽値』って呼んでますが、まあどれで呼んでも構わない気がします。

あと『真偽値』は英語で『boolean』(ブーリアン)とも呼ばれますのでこちらも覚えておいてください。参考書とか現場とかでよく使われます。

というわけでまずはやたら白黒はっきり決めてくる『真偽値』から解説をしていきます。『真偽値』は『true』(真)か『false』(偽)かを表す値です。『true』は「トゥルー」、『false』は「フォルス」と読みます。

イメージとしては『true』と『false』っていう根本的な値が用意されてるといった感じなので以下のようにそのまま記述すればOKです。

print(true) // 真偽値『true』が出力されます。
print(false) // 真偽値『false』が出力されます。

ちなみに『"』とかで囲ってしまうと文字列の『true』とか『false』になっちゃうので『真偽値』扱いさせたいならば『"』で囲ってはダメです。

print("true") // これは文字列の『true』になっちゃいます。
print("false") // これは文字列の『false』になっちゃいます。

『真偽値』の基本的なところはこれだけです。ここまでは問題ないかと思います。

あとは使い方ですよね。何か処理をさせて正しければ『true』、間違ってれば『false』、それだけな値なわけですが、プログラムにおいてこれがとっても重要なので、めちゃめちゃ使われる頻度が高いです。

これについては『比較演算子』と同時に見ていくと分かりやすいのでこのまま『比較演算子』についても解説していきます。

『比較演算子』は数値の大きさを比べたり文字列が同じ文字なのかを比べたりして、その結果によって該当する『真偽値』を返す処理を行う演算子のことを指します。

数学で両辺を比較する『<』とか『<=』とか『>』とか『>=』とかありましたよね。あれらがまさに『比較演算子』になります。

ではちょっと試してみましょう。以下のサンプルを見て下さい。

print(1 < 2)

上記のサンプルは数値『1』と数値『2』を比べていますね。これを実行させてみます。

true

真偽値『true』が返って来てますね。数値『1』は数値『2』よりも小さいというのは正しいので『真』になってるわけです。では『<』の記号を『>』にしてみましょう。

print(1 > 2)

するとこうなります。

false

真偽値『false』になってますね。数値『1』は数値『2』よりも小さいというのは間違いなので『偽』になってるわけです。基本的な動作はこんな感じですが大丈夫そうでしょうか。

そしてプログラミングでは数学にはない様々な比較ができます。以下は『比較演算子』の一覧です。

==オペランド同士が厳密に等しいならば『true』を返します。
!=オペランド同士が厳密に等しくないならば『true』を返します。
>左オペランドが右オペランドより大きいならば『true』を返します。
>=左オペランドが右オペランドより大きいまたは等しいならば『true』を返します。
<左オペランドが右オペランドより小さいならば『true』を返します。
<=左オペランドが右オペランドより小さいまたは等しいならば『true』を返します。

※『オペランド』についてはこちらへどぞ。

『比較演算子』についてはとりあえず上記の表に載っているものを抑えておけばなんとかなるかと思います。

上記の表の『==』の解説をちょっと見てみて下さい。なんだか「厳密に等しい」とか書いてありますね。

「『厳密』ってどういう意味なのか」ってお話なんですが、これは他の一部の言語での『==』は「厳密に等しい」かどうかを判定する演算子じゃなかったりすることがあるためだったりします。

例えばゆるーい言語として有名なJavaScriptのソースコードをちょっと見てみましょう。以下は文字列の『1』と数値の『1』を比較しています。

"1" == 1

これ、なんと『true』になっちゃいます。

文字列の『1』と数値の『1』は同じであるはずがないのにちょっと不思議な動作になっちゃってますね。これは見えないところで数値と文字列を勝手に変換してから比較されてしまうためにこんな動作になっちゃってたりします。

JavaScriptで厳密な比較をさせたい場合はこうします。

"1" === 1

『==』じゃなくて『===』ってなっているのがミソですね。これはちゃんと『false』が返ってきます。

曖昧な処理はバグの元になるので、JavaScriptとかPHPとかだと「特別な理由がない限り『==』じゃなくて『===』を使って構築していきましょう」なんてお作法があったりします。

Swiftの場合は『==』でもちゃんとした厳密な比較をしてくれますので安心して『==』を使ってしまってOKです。

あとSwiftでの『===』はオブジェクトとかインスタンスの比較のときに使用するものになります。詳しくは先の記事で解説していきますが、他の言語に精通している方は間違えないように気をつけて下さい。

では軽く『比較演算子』を試してみましょう。こんな感じになります。

print(1 == 2) // false
print(1 != 2) // true
print(1 > 2) // false
print(1 >= 2) // false
print(1 < 2) // true
print(1 <= 2) // true

print("ワンパンマン" == "ワンパンマン") // true
print("ワンパンマン" == "ペルソナ5") // false

数学の経験から「数値しか比較できない」という印象を持っているかもしれませんが、プログラミングになると文字列などの比較処理もできるのでその辺も把握しておくようにして下さい。

というわけで以上になります。

『比較演算子』の動作を確認すると、それと同時に『真偽値』がどういったものなのかなんとなくでも掴めたと思いますがいかがでしたでしょうか。

続いての記事では『データ型』とかについてやっていきましょう。ではこの辺で失礼致します。

この記事は桜舞が執筆致しました。

著者が愛する小型哺乳類

桜舞 春人 Sakurama Haruto

ISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。

記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。