LoginSignup
1
1

More than 3 years have passed since last update.

【Swift】Swiftで使われる演算式には何がある?

Last updated at Posted at 2020-11-29

演算式とは

演算式とは、演算子の種類に応じた演算を行い、演算結果の値を返す式です。
演算子とは、少しかっこよく言ってますが、+ , - , × , ÷ などです。
ちなみにプログラミングでは、+ , - , * , / で表します。

こちらが演算式の例になります。


var a = 12 + 20   // 32 (+演算子)
var b = 12 - 10   // 2  (-演算子)
var c = 12 * 2    // 24 (*演算子)
var d = 12 / 3    // 4  (/演算子)

少しレベルの上がった演算式

先ほどまでの演算式は全て整数同士の演算式でした。
ここからは少しややこしい演算式をご紹介します。

演算式には、それぞれの演算に対応した型が定義されています。

例えば、乗算を行う*演算子は、
整数を表すInt型や、浮動少数点数を表すDouble型に対応していますが、
文字列を表すString型には対応していません。

String型に対応してる演算子なんかないだろ!と思うかもしれませんが、
実は+演算子はString型に対応しています。


var a = 2 + 2   // 4
var b = "こんに" + "ちは"   // こんにちは

なので、ただ整数のみを扱うのもという認識ではなく、
小数や文字列の計算もできると言うことを頭の隅に置いておいてください。

また、演算するもの同士の型にも注意が必要です。
基本的に計算するものは全て同じ型で計算する必要があります。

Int型 + Int型や、String型 + String型などは見てきました。
では、Int型 + String型や、Double型 + Int型はどうなのか見てみます。


var a = 10   // Int型
var b = "こんにちは"   //String型
var c = a + b   // 10こんにちは ではなく、コンパイルエラー

var d = 10.0   // Double型
var e = 1   // Int型
var f = d + e   // 11.0 ではなく、コンパイルエラー

このような結果になります。

そして実際に出るエラー内容が、
var c = a + b のコンパイルエラー内容
Binary operator '+' cannot be applied to operands of type 'Int' and 'String'
和訳:二項演算子「+」は、タイプ「整数」および「文字列」のオペランドには適用できません。

var f = d + e のコンパイルエラー内容
Binary operator '+' cannot be applied to operands of type 'Double' and 'Int'
和訳:二項演算子「+」は、タイプ「Double」および「Int」のオペランドには適用できません。

これを見て分かったかと思いますが、
型が違うもの同士の計算は基本的に出来ません。

ですが、Int + String はまだしも、
Int + Double の計算でしたら今後使う可能性は高いと思います。

こういう時の解決方法は、Int型をDouble型に変える方法です。

Double + Int がダメなら Double + Double にしてしまえ!ということですね。


var a = 10.0   // Double型
var b = 1   // Int型
var c = a + Double(b)   // 11.0  Double型

今回は、Int型ではなくDouble型同士の計算にしたいので、
Double型のイニシャライザを使いInt型をDouble型にしてます。
var c = a + Double(b)

これを行うことによりDouble型同士の計算になりコンパイルエラーは発生しません。

では、String型もInt型やDouble型に変換してから計算すればいいのでは!?
と思う方もいるかもしれません。(私は単純なのでそう思いました・・・。)


var a = "こんにちは"    // String型
var b = Int(a)   // nil

予想通りといえば予想通りですが、Int型にはなりませんでした(笑)
ただ、コンパイルエラーにはなりませんでした。
おそらく変換できない値が入っていると nil になるように作られているのかもしれません。

そして、これはたまたま見つけたのですが、
下記のような場合だと自動でDouble型にしてくれるっぽいです。


var a = 10.0 + 1   //11.0  Double型

つまりどういうことかと言うと、
一度宣言された変数を使う場合はイニシャライザで変換してから型を合わせないといけない。
変数を使わず数字同士の計算をする場合は自動的に変換してくれる。

ということかと思います。

もし間違っていたらすみません。

次に最後なのですが、否定演算子というものも存在します。

否定演算子とは"!"のことで真理値を反転する演算子になります。
真理値とは、真偽を表すtrue や false のことで、型はBool型になります。

!演算子を使うとこの結果を逆にできます。
true は false に
false は true になります。


var a = true   // Bool型
var b = !a   //false   

!なんか使う機会あるの?と思うかもしれませんが、
if文という記法で結構使用するらしいので覚えておいて損はないと思います。

以上、長くなってしまいましたが最後まで読んでくださりありがとうございました。

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1