匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

「enchant.jsスマートフォンゲーム開発講座」とういう本を読んでいるのですが、ソースコードで以下のようなものがります。


var x = randfloat(0,300)|0;


この「|」ってどういう意味かわかりません。
「||」は論理 ORなのはわかるのですが。。
教えていただけないでしょうか?
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2015/02/17 01:43:51
  • 終了:2015/02/17 22:39:36

ベストアンサー

匿名回答2号 No.2

匿名回答2号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2015/02/17 03:03:46

http://okwave.jp/qa/q8449636.html
http://memocarilog.info/jquery/6480

小数点以下を切り捨てるための定型文だそうで

匿名質問者

なるほど、知らなかったです。
ありがとうございます。

2015/02/17 22:37:19

その他の回答(2件)

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2015/02/17 02:02:51

ビット演算のOR。

var a = randfloat(0,300);
// var x = Math.floor(a) == 0 ? 0 : a;    ※間違ってます!
var x = Math.floor(a) == 0 ? 0 : Math.floor(a);

もしくは、

var a = randfloat(0,300);
var x;
if (Math.floor(a) == 0) {
  x = 0;
} else {
//  x = a;    ※間違ってます!
  x = Math.floor(a);
}

と、同値。

ビット演算が極めて速いのは、アセンブラか C の類なので、無意味に分かりにくい。
たいした本じゃないと思います。


追記。
3号さんのコメントで、ようやく気が付きました。
たいした本じゃないとケチをつけたやつが、たいしたやつではないという...


また追記。
ゼロの場合を分ける意味がないんじゃないかと言われました orz

var x = Math.floor( randfloat(0,300) );
他7件のコメントを見る
匿名回答1号

ゔ

2015/02/17 12:18:01
匿名質問者

ご回答ありがとうございます。
もやもやしてたのがすっきりしました。
すぐに答えいただき感謝です!

2015/02/17 22:39:27
匿名回答2号 No.2

匿名回答2号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2015/02/17 03:03:46ここでベストアンサー

http://okwave.jp/qa/q8449636.html
http://memocarilog.info/jquery/6480

小数点以下を切り捨てるための定型文だそうで

匿名質問者

なるほど、知らなかったです。
ありがとうございます。

2015/02/17 22:37:19
匿名回答3号 No.3

匿名回答3号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2015/02/17 09:07:05

小数点以下を切り捨てて、整数に変換する為のものです。

JavaScript は「弱い型付け」の言語です。
演算時に渡された値が、期待される型でなかった場合、自動で変換します。(出来るなら)

たとえば「文字列でない値」と「文字列」の + 演算の場合「文字列でない値」を文字列に変換した上で結合するというルールになっています。

a = 1 + '1';
// => '11'

この性質を利用して、値を目的の型に変換するという手法が一部で使われています。

文字列に変換 a = x + "" "" (空文字列)を +
数値に変換 a = x - 0 0 を -
切り捨てで整数に変換 a = ~~x ~ 演算子に2回かける
真偽値に変換 a = !!x ! 演算子に2回かける

「|0」は上記の「~~」と同じですね。ビット演算子が整数を要求していることを利用して、整数にしています。Math.floor(x) と似ていますが x が負の場合、切り捨てかたが違います。

匿名質問者

ご丁寧かう、的確なご回答ありがとうございます。
すっきりしました。勉強になりました。

2015/02/17 22:38:14

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません