吉里吉里/tjs2解説
単項+、単項-
最終更新:
tjs2
-
view
単項+演算子
加算演算子の+は左と右を足す二項演算子でしたが、単項演算子の+もあります
単項演算子+は文字列を数値に変換する演算子です
加算演算子の+は左と右を足す二項演算子でしたが、単項演算子の+もあります
単項演算子+は文字列を数値に変換する演算子です
// 単項+演算子を使わないと・・・
var i;
i = System.inputString("数字の入力", "数字を入力して下さい", "");
var j = i + 5;
System.inform(i + " + 5 = " + j);
これを実行すると少しおかしなことになります
例えば3を入力すると「3 + 5 = 8」と表示されて欲しいのですが「3 + 5 = 35」と表示されてしまいます
System.inputStringは文字列を入力させる関数なので変数iには文字列"3"が代入されます
よって変数jには "3" + 5 が代入されます
加算演算子+は文字列と数値の計算の時には数値を文字列に変換してから計算するので、"3" + 5は文字列"35"になります
変数jには8が代入されて欲しいのですが、そのためには文字列"3"を数値の3に変換する必要があります
例えば3を入力すると「3 + 5 = 8」と表示されて欲しいのですが「3 + 5 = 35」と表示されてしまいます
System.inputStringは文字列を入力させる関数なので変数iには文字列"3"が代入されます
よって変数jには "3" + 5 が代入されます
加算演算子+は文字列と数値の計算の時には数値を文字列に変換してから計算するので、"3" + 5は文字列"35"になります
変数jには8が代入されて欲しいのですが、そのためには文字列"3"を数値の3に変換する必要があります
文字列の前に+を付けると数値に変換する事ができます
// 単項+演算子を使って変換
var i;
i = System.inputString("数字の入力", "数字を入力して下さい", "");
var j = +i + 5;
System.inform(i + " + 5 = " + j);
加算演算子+よりも単項演算子+の方が優先順位が高いので、文字列が数値に変換されてから足されます
よって変数jには無事数値同士で足された結果が代入されます
よって変数jには無事数値同士で足された結果が代入されます
単項-演算子
単項演算子-は数値の正負を逆にします
単項演算子-は数値の正負を逆にします
// 単項-のサンプル
var i = 4;
-i;
System.inform(i); // -4が表示される
単項演算子+もですが、+i;と書くだけで変数iが変換されます
サンプルでは-i;の時点でiの正負が逆になります
サンプルでは-i;の時点でiの正負が逆になります
// もう一つサンプル
var i = 4;
System.inform(-i); // -4が表示される
System.inform(i); // -4が表示される
System.inform(-i);の-iでiの正負が逆になるので次のSystem.informでも-4が表示されます
単項+や単項-で半角数字以外が含まれた文字列を指定すると、その直前までが変換されます
var i = "10月31日発売!";
System.inform(+i); // 10が表示される
「月」は数値に変換できないので変数iの中身は数値の10になります
"月31日発売!"の部分は消えてしまうので注意してください
"月31日発売!"の部分は消えてしまうので注意してください
var i = "-10 + 6";
System.inform(-i); // 10が表示される
+ 6の部分は無くなって変数iの中身は-10の正負が逆になった10になります