JSゆるふわめも

がっこうでべんきょうしたことをめもがきしてます

まとめ①

浮動小数点演算について

http://docs.oracle.com/cd/E19957-01/806-4847/ncg_goldberg.html

 

インクリメントのタイミング

 C++は不定。次の行までにインクリメントされることが保証されている

Javaは一定

stackoverflow.com

 

a = 5;
i=++a + ++a + a++; =>
i=6 + 7 + 7; (a=8)

a = 5;
i=a++ + ++a + ++a; =>
i=5 + 7 + 8; (a=8)

例からわかるように前置インクリメンタルはその自身の値を評価するタイミングではインクリメントされず、次の値を評価する時にはインクリメントされている。

 

i=a++ + a++ + a++;なら

 

i=5 + 6 + 7; (a=8)

i=18となる。

 

Javaにおけるオブジェクト

メモリ上に確保されたフィールド値を格納する領域 + αがオブジェクト

 

配列の要素番号の型がlongではなくてintである理由

単純に言語仕様を決定した当時はそれで十分だったから。

ちなみにJavaのBinarySortは巨大な配列をソートする場合に生じるバグを含んでいたが、Java開発当初はそのような配列が作成されることがなかったため、しばらくバグを含んだままの状態であった。

Research Blog: Extra, Extra - Read All About It: Nearly All Binary Searches and Mergesorts are Broken