lua学習(三)関係演算子

5214 ワード

Lua演算子
演算子は、解釈器に特定の数学または論理演算を実行するように伝える特殊な記号です.Luaには、次の演算子タイプがあります.
  • 算術演算子
  • 関係演算子
  • 論理演算子
  • その他の演算子
  • 算術演算子
    次の表に、Lua言語の一般的な演算子を示します.
    Aの値を10、Bの値を20に設定します.
    オペレータ
    説明
    ≪インスタンス|Instance|emdw≫
    +
    加算
    A+B出力結果30
    -
    減算
    A-B出力結果-10
    *
    乗算#ジョウサン#
    A*B出力結果200
    /
    除算
    B/A w出力結果2
    %
    余剰を取る
    B%A出力結果0
    ^
    べき乗
    A^2出力結果100
    -
    マイナス記号
    -A出力結果v-10
    ≪インスタンス|Instance|emdw≫
    算術演算子の応用を以下の例でより徹底的に理解することができる:view p
    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に設定します.
    オペレータ
    説明
    ≪インスタンス|Instance|emdw≫
    ==
    等しい、2つの値が等しいかどうかを検出し、等しい場合はtrueを返し、そうでない場合はfalseを返します.
    (A==B)はfalseです.
    ~=
    等しくないで、2つの値が等しいかどうかを検出して、等しくfalseを返して、さもなくばtrueを返します
    (A~=B)はtrueです.

    より大きい、左の値が右の値より大きい場合はtrueを返し、そうでない場合はfalseを返します.
    (A>B)はfalseです.
    より小さく、左の値が右の値より大きい場合はfalseを返し、そうでない場合はtrueを返します.
    (A>=
    以上、左の値が右の値より大きい場合はtrueを返します.そうでない場合はfalseを返します.
    (A>=B)falseを返します.
    <=
    より小さい値は等しく、左の値が右の値より小さい場合はtrueを返します.そうでない場合はfalseを返します.
    (A<=B)はtrueを返します.
    table、userdata、functionタイプの場合、luaはそれらの参照で比較されます.すなわち、それらが1つのオブジェクトを指している場合にのみ等しいです.
    ≪インスタンス|Instance|emdw≫
    関係演算子の適用をより明確に理解するには、次の例を使用します.
    [html]  view plain
     copy
    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より大きい」)end  
    view plai
    以上のプログラムの実行結果は次のとおりです.
    Line 1-aはbに等しくない
    Line 2-aはbに等しくない
    Line 3-aがb以上
    Line 4-aはbより大きい
    論理演算子
    次の表に、Lua言語でよく使用される論理演算子を示します.Aの値をtrue、Bの値をfalseに設定します.
    オペレータ
    説明
    ≪インスタンス|Instance|emdw≫
    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です.
    ≪インスタンス|Instance|emdw≫
    論理演算子の適用をより明確に理解するには、次の例を使用します.
    [html]  view plain
     copy
    a = true  
    b = true  
    if ( a and b )  
    then  
    print(「a and b-条件はtrue」)end  
      
    if ( a or b )  
    then  
    print(「a orb-条件はtrue」)end  
      
    print(「----------分割線-------」)--aとbの値を変更します.
    a = false
    b = true    
    if ( a and b )    
    then   
    print(「aandb-条件はtrue」)else   
    print(「aandb-条件は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言語の接続演算子と、計算テーブルまたは文字列の長さの演算子を示します.
    オペレータ
    説明
    ≪インスタンス|Instance|emdw≫
    ..
    2つの文字列を接続
    a..b,ここでaは「Hello」,bは「World」であり,出力結果は「Hello World」である.
    #
    文字列またはテーブルの長さを返す一元演算子.
    #「Hello」は5を返します.
    ≪インスタンス|Instance|emdw≫
    次の例では、テーブルまたは文字列の長さを計算する演算子への接続演算子の適用をより明確に理解できます.
    [html]  view plain
     copy
    a = "Hello "   
    b = "World"  
    print(「接続文字列aおよびb」,a..b)print(「b文字列長」、#b)print(「文字列Test長」#「Test」)以上のプログラムの実行結果は次のとおりです.
    接続文字列aとb Hello World
    b文字列長5
    文字列Test長4
    演算子の優先度
    高い順から低い順:
    [html]  view plain
     copy
    ^    
    not    - (unary)    
    *      /  
    +      -   
    ..  
    <      >      <=    >=     ~=     ==   
    and  
    or  
    ^と..を除いて外のすべての二元演算子は左に接続されています.
    a+i < b/2+1                (a+i)
    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)
    ≪インスタンス|Instance|emdw≫
    Lua言語演算子の優先度は、次の例でより明確に理解できます.
    [html]  view plain
     copy
    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