<< Click to Display Table of Contents >> マニュアル > スクリプトガイド > スクリプトVer2(SC2構文) > オペレーター(演算子) |
オペレーター(演算子)
スクリプトで使用できるオペレータは以下のとおりです。
オペレーター |
|||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
算術演算子 |
|
||||||||||||||||||
比較演算子 |
|
||||||||||||||||||
論理演算子 |
|
||||||||||||||||||
ビット演算子 |
|
オペレーターの特長と使用例
暗黙の文字列合成と数値演算
オペランドの内容がいずれも文字列の場合、加算は文字列の合成として処理されます。ただし、片方のオペランドが数値でもう片方のオペランドが文字列の場合には、文字列の内容が数字の場合は数値同士の演算として加算が行われます。
var a = "Hello" + " " + "World";//変数aには文字列"Hello World"が代入される var b = "1" + 2; //変数bには数値3が代入される var d = 1 + "2"; //同様に数値3になる
四則演算におけるブール値の解釈
ブール値を四則演算しようとすると、Tは1、Fは0に変換されます。
var a = T + T + T + F + T; //数値4になる(1+1+1+0+1) var b = T * 123 + F * 456; //数値123になる(1*123 + 0*456)
時刻の加算と減算
時刻の場合、以下の値の組み合わせで加算、減算が行えます。
1)[時刻] + [数値] または [時刻] - [数値]の場合
数値は秒として解釈され、秒単位で時刻の値を進めたり戻したりできます。
var a = #2004/1/1 0:0:0#; var b = a + 10; // bはaに10秒加算されて#2004/1/1 0:0:10#になる var d = a + 10.123; // bはaに10秒123ms加算されて#2004/1/1 0:0:10.123#になる
2)[時刻] - [時刻] の場合
時刻の差を秒として数値で返します。
var a = #2004/1/1 0:0:0#; var b = #2004/1/1 0:1:0#; var d = b - a; // dは60になる(1分の差=60秒)
配列に対する演算
■四則演算( +, -, *, / )オペレータ
a = c(1,2,3); b = a + 1; // bはc(2, 3, 4)になる d = a - 1; // dはc(0, 1, 2)になる e = a * 2; // eはc(2, 4, 6)になる f = a / 2; // fはc(0.5, 1, 1.5)になる g = a + c(2, 3, 4); // gはc(3, 5, 7)になる
■比較演算( <, <=, >, >=, == )オペレータ
a = c(1,2,3); b = a < 2; // b はc(T, F, F)になる d = a <= 2; // d はc(T, T, F)になる e = a > 2; // e はc(F, F, T)になる f = a >= 2; // f はc(F, T, T)になる g = a == 2; // f はc(F, T, F)になる h = a > c(3, 2, 1); // gはc(F, F, T)になる
時刻の加算と減算
多次元配列の場合も、要素すべてに一括で演算が行われます。
a = c(c(1,2,3), c(4,5,6)); b = a + 2; // b はc(c(3,4,5), c(6,7,8))になる
「c(1,2,3,4,5,6,7,8) + c(1,2,3)」のように異なる要素数の配列の演算をした場合は、右側c(1,2,3)が繰り返し演算に使用されます。つまり「c(1,2,3,4,5,6,7,8) + c(1,2,3)」は「c(1,2,3,4,5,6,7,8) + c(1,2,3,1,2,3,1,2)」 と同じ結果、つまりc(2,4,6,5,7,9,8,10)となります。 |
数値のビット演算
2進数でi番目のビットを取得したり、i番目のビットだけをON/OFFしたりする場合には、ビット演算子(「&」及び「|」)を使用します。
例)
var b = (a & 0x1) > 0; // aの数値の1ビット目が1であればbはTになります。 var b = (a & 0x2) > 0; // aの数値の2ビット目が1であればbはTになります。 var b = (a & 0x4) > 0; // aの数値の3ビット目が1であればbはTになります。 var b = (a & 0x8) > 0; // aの数値の4ビット目が1であればbはTになります。 var a = a | 0x1; // aの数値の1ビット目を1にします。 var a = a | 0x2; // aの数値の2ビット目を1にします。 var a = a | 0x4; // aの数値の3ビット目を1にします。 var a = a | 0x8; // aの数値の4ビット目を1にします。 var a = a & 0xFFFE; // aのワード値の1ビット目を0にします。 var a = a & 0xFFFD; // aのワード値の2ビット目を0にします。 var a = a & 0xFFFB; // aのワード値の3ビット目を0にします。 var a = a & 0xFFF7; // aのワード値の4ビット目を0にします。