単項数値演算の違和感

単項+演算子は単項数値格上げの対象になる。

byte b = 10;
byte c = +b;

上記の「+b」は単項数値格上げによってintになり、byteに代入できない。

byte b = 10;
byte c = +10;

今度はOK。代入の際には代入変換と呼ばれる変換があって、代入する値が定数であり、かつ代入先の変数に代入可能な数値集合に収まっていれば自動的にその型になる。

byte b = (int) 10;

これも気持ち悪いけどコンパイル可能。