JavaA2Z

KAB-studio > プログラミング > JavaA2Z > 数値格上げ変換とは

数値格上げ変換

日本語 数値格上げ変換
英語 numeric promotion
ふりがな すうちかくあげへんかん
フリガナ スウチカクアゲヘンカン

解説

演算子オペランドbyteshortchar変数や値を渡すと、intに自動的キャストされること。
 
以下の演算子の使用時にわれる。
単項+演算子
単項-演算子
~演算子
<<演算子
>>演算子
>>>演算子
[]演算子
+演算子
-演算子
*演算子
/演算子
%演算子
<演算子
<=演算子
>演算子
>=演算子
==演算子
!=演算子
&演算子
^演算子
|演算子
?演算子三項演算子
 
これらの演算子は、演算子オペランドbyteshortcharのいずれかの場合、intキャストされてから使用される。また、計算結果を返す演算子の場合、そのintとなる。
たとえば「byte bt = 1;」と変数宣言されている場合、「byte bt2 = -bt;」はコンパイルエラーとなる。これはbyte変数の「bt」に単項-演算子-」を使用した際に数値格上げ変換がわれ、返される値のintになり、byte変数に格納できないためである。この場合、「int i = -bt;」のようにintで受け取らなければならない。

intlongの場合にはわれない。longintに格下げ変換されたりはしない。
また、オペランドと返されるが関係ない演算子[]演算子や比較演算子)の場合には問題とならない。
 
数値格上げ変換により、byteshortchar演算は大きく制限されることになる。
これらのを用いて演算う場合には、まずintキャストしてからうといいだろう。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        byte bt = 1;

        // 単項-演算子は「数値格上げ変換」を行うため
        // 返される値の型はint型になります。
        // ※コンパイルエラーの例
        // byte bt2 = -bt;
        // ※エラーメッセージ
        // 型の不一致: int から byte には変換できません
        // ※コンパイルエラーの例ここまで

        // int型で受け取れば問題ありません。
        int i = -bt;
        System.out.println( i );
        // -1

        // 数値格上げ変換ではbyte型、short型、char型が
        // int型に変換されます。int型とlong型はそのままです。
        long l = 2;
        long l2 = -l;
        System.out.println( l2 );
        // -2

        // 数値格上げ変換は多くの演算子で行われます。
        // たとえば二項演算子の+演算子でも行われます。
        short shLh = 3;
        short shRh = 4;
        // ※コンパイルエラーの例
        // short sh = shLh + shRh;
        // ※エラーメッセージ
        // 型の不一致: int から short には変換できません
        // ※コンパイルエラーの例ここまで

        // int型で受け取れば問題ありません。
        int i2 = shLh + shRh;
        System.out.println( i2 );
        // 7
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        byte bt = 1;

        // 単項-演算子は「数値格上げ変換」を行うため
        // 返される値の型はint型になります。
        // ※コンパイルエラーの例
        // byte bt2 = -bt;
        // ※エラーメッセージ
        // 型の不一致: int から byte には変換できません
        // ※コンパイルエラーの例ここまで

        // int型で受け取れば問題ありません。
        int i = -bt;
        System.out.println( i );
        // -1

        // 数値格上げ変換ではbyte型、short型、char型が
        // int型に変換されます。int型とlong型はそのままです。
        long l = 2;
        long l2 = -l;
        System.out.println( l2 );
        // -2

        // 数値格上げ変換は多くの演算子で行われます。
        // たとえば二項演算子の+演算子でも行われます。
        short shLh = 3;
        short shRh = 4;
        // ※コンパイルエラーの例
        // short sh = shLh + shRh;
        // ※エラーメッセージ
        // 型の不一致: int から short には変換できません
        // ※コンパイルエラーの例ここまで

        // int型で受け取れば問題ありません。
        int i2 = shLh + shRh;
        System.out.println( i2 );
        // 7
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2010/04/02
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。