English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Lua 演算子

演算子は特定の数学的または論理的な演算を実行するようにインタープリタに指示する特殊なシンボルです。Luaは以下の種類の演算子を提供しています:

  • 算術演算子

  • 関係演算子

  • 論理演算子

  • 他の演算子

算術演算子

以下の表は Lua 言語の常用算術演算子を示しています。Aの値を設定します10、Bの値は 20:

演算子説明
+加法A + Bの出力結果 30
-減法A - Bの出力結果 -10
*乗法A * Bの出力結果 200
/除法B / A w出力結果 2
%取余B % Aの出力結果 0
^乗幂A^2 出力結果 100
-マイナス号-Aの出力結果 -10

オンラインサンプル

以下の例を通じて、算術演算子の適用をより深く理解することができます:

a = 21
b = 10
c = a + b
print("Line 1 - c の値は「 」, c )
c = a - b
print("Line 2 - c の値は「 」, c )
c = a * b
print("Line 3 - c の値は「 」, c )
c = a / b
print("Line 4 - c の値は「 」, c )
c = a % b
print("Line 5 - c の値は「 」, c )
c = a^2
print("Line 6 - c の値は「 」, c )
c = -a
print("Line 7 - c の値は「 」, c )

以上のプログラムの実行結果は:

Line 1 - c の値は     31
Line 2 - c の値は     11
Line 3 - c の値は     210
Line 4 - c の値は     2.1
Line 5 - c の値は     1
Line 6 - c の値は     441
Line 7 - c の値は     -21

関係演算子

以下の表は Lua 言語の常用関係演算子を示しています。Aの値を設定します10、Bの値は 20:

演算子説明
==同じ、二つの値が同じかどうかを確認し、同じ場合は true を返し、それ以外の場合は false を返します(A == B) は false です。
~=異なる、二つの値が同じかどうかを確認し、異なる場合は true を返し、それ以外の場合は false を返します(A ~= B) は true です。
>大きい、左側の値が右側の値より大きい場合には true を返し、それ以外の場合は false を返します(A > B) は false です。
<小さい、左側の値が右側の値より大きい場合には false を返し、それ以外の場合は true を返します(A < B) は true です。
>=大きくて同じか、左側の値が右側の値以上の場合は true を返し、それ以外の場合は false を返します(A >= B) は false を返します。
<=小さくて同じか、左側の値が右側の値以下の場合は true を返し、それ以外の場合は false を返します(A <= B) は true を返します。

オンラインサンプル

以下の例を通じて、関係演算子の適用をより深く理解することができます:

a = 21
b = 10
if( a == b )
then
   print("Line 1 - a 等于 b" )
else
   print("Line 1 - a 異なる b" )
end
if( a ~= b )
then
   print("Line 2 - a 異なる b" )
else
   print("Line 2 - a 等于 b" )
end
if ( a < b )
then
   print("Line 3 - a が b より小さい" )
else
   print("Line 3 - a が b 以上" )
end
if ( a > b ) 
then
   print("Line 4 - a が b より大きい" )
else
   print("Line 5 - a が b 以下" )
end
-- a と b の値を変更する
a = 5
b = 20
if ( a <= b ) 
then
   print("Line 5 - a が b 以下" )
end
if ( b >= a ) 
then
   print("Line 6 - b が a 以上" )
end

以上のプログラムの実行結果は:

Line 1 - a が b と異なる
Line 2 - a が b と異なる
Line 3 - a が b 以上
Line 4 - a が b より大きい
Line 5 - a が b 以下
Line 6 - b が a 以上

論理演算子

以下の表は Lua 言語の常用論理演算子を示しています。A の値は true、B の値は false とします:

演算子説明
and論理と演算子。A が false ならば A を返します。そうでない場合は B を返します。(A and B) が false です。
or論理或演算子。A が true ならば A を返します。そうでない場合は B を返します。(A or B) が true です。
not論理非演算子。条件が true ならば、論理非は false です。not(A and B) が true です。

オンラインサンプル

以下の例を通じて、論理演算子の適用をより深く理解することができます:

a = true
b = true
if ( a and b )
then
   print("a and b - 条件が true" )
end
if ( a or b )
then
   print("a or b - 条件が true" )
end
print("---------分割線---------" )
-- a と b の値を変更する
a = false
b = true
if ( a and b )
then
   print("a and b - 条件が true" )
else
   print("a and b - 条件が false" )
end
if ( not( a and b) )
then
   print("not( a and b) - 条件が true" )
else
   print("not( a and b) - 条件が false" )
end

以上のプログラムの実行結果は:

a and b - 条件が true
a or b - 条件が true
---------分割線---------
a and b - 条件が false
not( a and b) - 条件が true

他の演算子

以下の表は Lua 言語の結合演算子と計算テーブルまたは文字列の長さの演算子を示しています:

演算子説明
..文字列を結合するa..b 、a が "Hello " 、b が "World" の場合、出力結果は "Hello World" になります。
#一元演算子、文字列またはテーブルの長さを返します。#"Hello" 返回 5

オンラインサンプル

以下の例を通じて、結合演算子と計算テーブルまたは文字列の長さの演算子の適用をより深く理解することができます:

a = "Hello "
b = "World"
print("文字列 a と b を結合する ", a..b )
print("b 文字列の長さ ",#b )
print("文字列 Test の長さ ",#"Test" )
print("基本教程網のURLの長さ ",#"ja.oldtoolbag.com"

以上のプログラムの実行結果は:

文字列 a と b を結合する     Hello World
b の文字列長さ     5
文字列 Test の長さ     4
基本教程網のURLの長さ     14

演算子の優先順位

高い順から低い順の順序:

^
not    - (一項)
*      /       %
+      -
..
<      >      <=     >=     ~=     ==
and
or

^と..以外のすべての二項演算子は左結合です。

a+i < b/2+1          <-->       (a+i) < ((b/2)+1)
5+x^2*8              <-->       5+((x^2)*8)
a < y and y <= z     <-->       (a < y) and (y <= z)
-x^2                 <-->       -(x^2)
x^y^z                <-->       x^(y^z)

オンラインサンプル

以下の例を通じて、Lua 言語の演算子の優先順位をより深く理解することができます:

a = 20
b = 10
c = 15
d = 5
e = (a + b) * c / d;-- ( 30 * 15 ) / 5
print("(a + b) * c / d の計算値は  :",e )
e = ((a + b) * c) / d; -- (30 * 15 ) / 5
print("((a + b) * c) / d の計算値は :",e )
e = (a + b) * (c / d);-- (30) * (15/5)
print("(a + b) * (c / d) の計算値は :",e )
e = a + (b * c) / d;  -- 20 + (150/5)
print("a + (b * c) / d の計算値は  :",e )

以上のプログラムの実行結果は:

(a + b) * c / d の計算値は  :    90.0
((a + b) * c) / d の計算値は :    90.0
(a + b) * (c / d) の計算値は :    90.0
a + (b * c) / d の計算値は  :    50.0