Category:LSL 演算子

From Second Life Wiki
Jump to navigation Jump to search

新しい版の LSL_Operators のページを置いておくためにページを改版しました。消さないで

現在の版は LSL_演算子 にあります。

演算子の優先順位 (演算順序)

優先順位は仮

記号 説明 結合順
()
[]
丸括弧(Parenthesis)
リスト・コンストラクタ
中から外
右から左
, コンマ 左から右[1]
++ -- インクリメント / デクリメント 右から左
(type)
~
!
-
型キャスト
ビット否定
論理否定
否定
右から左
/
%
*
|
^
除算
剰余
乗算
ビット単位 OR
ビット単位 XOR
右から左
+
-
加算/連結
減算
右から左
<< >> ビットシフト 左 / 右 右から左
< >
<= >=
より小さい / より大きい
以下/以上
右から左
== != 等しい/等しくない 右から左
& ビット単位 AND 右から左
^ ビット単位 XOR 右から左
| ビット単位 OR 右から左
&& || 論理積 / 論理和 右から左
=
+= -= /= %= *=
代入
加算代入 / 減算代入 / 除算代入 / 剰余代入 / 乗算代入
右から左[1]
  1. ^ コンマと代入演算子は特別なケースです。コンマは全ての演算子を左に進めます。 しかし、丸括弧や角括弧で括られた中では、順番通りに計算します。

<lsl>//-- example: float a; float b; float c;

string uExample( float x, float y ){

   return (string)x + " " + (string)y;

}

default{

   state_entry(){
       string vStrReport = "\n" + (string)(++a) + " " + (string)(++a); //-- first line reports "2.000000 1.000000"
       vStrReport += "\n" + (string)[++b, " ", ++b]; //-- second line reports "1.000000 2.000000"
       vStrReport += "\n" + uExample( ++c, ++c ); //-- third line reports "1.000000 2.000000"
       llOwnerSay( vStrReport );
   }

}</lsl> 代入演算子は、それより左にある演算子よりも常に優先順位は高くなります (but obey all precedences below above increment/decrement. <lsl>//-- example: integer a = 0;

default{

   state_entry(){
       llOwnerSay( (string)(++a + a *= ++a) ); //-- yields  "3" instead of "4"
   }

}</lsl>

右から左

  • Placeholder for commentary about the LSL compiler and LSO R2L implications.

This category currently contains no pages or media.