[スマートコントラクト・プログラミング]Solidityの演算子

プログラミング

スマートコントラクトプログラミング言語であるSolidityの演算子について記載します。

Solidity 6つの演算子

Solidityには主に6つの種類の演算子が存在しています。

  1. 算術演算子
  2. 関係演算子
  3. 論理演算子
  4. ビット演算子
  5. 代入演算子
  6. 条件演算子

算術演算子

算術演算子は、算術演算または数学演算を実行するために使用されます。

Solidity は、次の算術演算子をサポートしています。

算術演算子 記号 説明
加算 + 2 つの要素の加算
減算 最初の要素から 2 番目の要素を減算
乗算 * 両方の要素を乗算
除算 / 分子を分母で除算
余り % 整数除算後の剰余を付与
インクリメント ++ 整数値を 1 増加
デクリメント 整数値を 1 減少

下記はArithmeticSampleコントラクトの中でそれぞれの算術演算子の例を示したコントラクトです。

関係演算子

関係演算子は、2 つの値を比較するために使用します。

Solidityでは、次の関係演算子をサポートしています。

等価比較演算子 記号 説明
同等 == 2つの値が等しいかどうかを調べ、等しい場合はtrueを、その逆の場合はfalseを返す
等しくない != 2つの値が等しいかどうかを調べ、等しくない場合はtrueを返し、逆の場合はtrueを返す
より大きい > 左の値が右の値より大きいかどうかを調べ、大きい場合は真を、逆の場合は偽を返します。
未満 < 左の値が右の値より小さいかどうかを調べ、小さい場合は真を、逆の場合は偽を返す
以上 >= 左の値が右の値より大きくかつ等しいかどうかを調べ、大きくかつ等しい場合は真を、逆の場合は偽を返します。
以下 <= 左の値が右の値より小さいかどうかを調べ、小さくて等しい場合は真を、その逆の場合は偽を返します。

下記はRelationalSampleコントラクトの中でそれぞれの関係演算子の例を示したコントラクトです。

論理演算子

論理演算子は、2 つ以上の条件を組み合わせるために使用されます。

Solidityでは、次の論理演算子をサポートしています。

論理演算子 記号 説明
論理積 && 両方の条件が真の場合はtrueを、一方または両方の条件が偽の場合はfalseを返す。
論理和 || 片方または両方の条件が真のときtrueを、両方が偽のときfalseを返す
論理否定 ! 条件を満たさない場合はtrueを返し、それ以外の場合はfalseを返す

下記はRelationalSampleコントラクトの中でそれぞれの関係演算子の例を示したコントラクトです。

上記のスマートコントラクトのaに1、bに何も設定せずにコードをCallした場合、下記の結果となります。

論理積:false 論理和:true 論理否定:false

ビット演算子

ビット演算子は、ビット単位で動作し、ビットレベルの演算を実行するために使用されます。Solidity は以下の演算子をサポートしています。

ビット演算子 記号 説明
AND & 整数の各ビットに対してブール演算の AND 演算を行う
OR | | 整数の各ビットに対して論理和演算を行う
XOR ^ 整数引数の各ビットに対して論理排他的論理和演算を行う
Not 整数引数の各ビットに対して、ブーリアンNOT演算を行う
左シフト << 第1オペランドのすべてのビットを第2オペランドで指定された数だけ左に移動
右シフト >> 第1オペランドのすべてのビットを第2オペランドで指定された桁数だけ右方向に移動

下記はBitwiseSampleコントラクトの中でそれぞれの関係演算子の例を示したコントラクトです。

代入演算子

代入演算子は、変数に値を割り当てるためのものです。

左側のオペランドは変数で、右側のオペランドは値です。

Solidity は、次の代入演算子をサポートしています

代入演算子 記号 説明
割り当て = 右辺の値を左辺のオペランドに単純に代入する
追加 += 左辺のオペランドに右辺のオペランドを加算し、左辺のオペランドに値を代入する
代入減算 -= 左辺のオペランドから右辺のオペランドを減算し、その値を左辺のオペランドに代入
乗算代入 *= 両オペランドを乗算し、左オペランドに値を代入
分割 /= 左辺のオペランドを右辺のオペランドで割り、その値を左辺のオペランドに代入
係数の割り当て %= 左辺のオペランドを右辺のオペランドで割り、その余りを左辺のオペランドに代入

下記はAssignSampleコントラクトの中でそれぞれの代入演算子の例を示したコントラクトです。

条件演算子

条件演算子は、最初に式を評価してから、true または false に対応する戻り値の条件をチェックする演算子です。

最後に

今回紹介したSolidityの仕様やコードをRemix IDEHardhatで実際に実行やテストをして確認してみましょう。

実際に動かしたり、テストすることで理解が深まるかと思います。

hardhatのインストール手順

Ethereum(イーサリアム)のDApps開発環境Hardhatのインストール手順
Ethereum(イーサリアム)のローカル開発環境であるHardhatのインストール手順を記載します。 Hardhatとは? Hardhatは、Solidityなどで開発したイーサリアムのスマートコントラクト、Dappsをコ...

HardhatでスマートコントラクトのDeploy手順

[Hardhat]SolidityでHello Worldのスマートコントラクトを作成
Solidityを使ってHello Worldを作成してみましょう SolidityでHello World! 前提条件 ・Hardhat デフォルト・フォルダ構成 Hardhatについては下記記事を参照ください。 ...
タイトルとURLをコピーしました