アクセスカウンター アクセスカウンター アクセスカウンター
 

ことのはの散策

 

type casting: 型キャスト,型変換


                                                                                      上智大学 伊藤 潔

                                                                                            2013年1月4日

 type castingは,「型キャスト,型変換」と訳されます.

 そもそも,castは,「(ある方向に向けて)投げる」という意味を持ちます.

 演劇や映画などでcastig 「配役」は,俳優を役に割り当てることです.

 broadcastは「放送」です.broadcaster,あるいは約めてcasterは,情報を視聴者に向けて送る,投げる人のことです.

 die casting 「鋳造(ちゅうぞう)」は,die 「金型」に溶融物を流し込んで鋳物(いもの)を造る方法です.

 type casting が,die castingを意識して類推したのか,あるいは,castの持つ意味から,自然と普通に作られたのかどうかは,わかりませんが,castの意味を味わうと,type castingが,「型変換」の意味を持つことがよくわかります.

 変数(☞ 式(expression)と代入(assignment))やリテラル(☞ literature, literacy, literal:)は,それが持つ値について,type: 型 を有します.整数型,実数型,文字型などです.これらが計算で使われるとき,型の異なるものが混じっているとき,型を同じにするために.type castingは,「型キャスト,型変換」が行われます.

 暗黙的な (implicit)型変換は,式の中で整数型,実数型が混じっている時は,実数型に変換すること,また,単精度と倍精度の型が混じっているときは,倍精度の型に変換することです.代入文の左辺の変数の型と右辺の式の値の型が異なる時は,右辺の型を左辺の型に変換します.C言語のプログラム例で見ます.

        int  m,n;
       float x,y;

 m と n が整数型,x と y が実数型です.
 m =  n+1; は,type castingは起きません.
 x = n+1; は,n+1 の値が整数型なので,実数型 x への代入の際に,n+1 の値が実数型 x へtype castingされます.
 x = n+2.3; は,n+2.3 の n が実数型にtype castingされて,n+2.3の値が実数型になり,その型のまま,実数型xへ代入されます.
 y = x*2.5; は,type castingは起きません.
 y = x+3; は,x+3の 3 が実数型にtype castingされて,x+3が実数型になり,その型のまま,実数型 x へ代入されます.
 y=m+5; は,m+5はtype castingされず,そのまま整数型で計算されますが,実数型 y への代入の際に,m+5の値が実数型 x へtype castingされます.

 明示的な(explicit)型変換は,必要な部分にtype castingを明示的に示します.

 C言語のプログラム例で見ます.

/1/  #include <stdio.h>

 

/2/  main(){

/3/      int score[300];

/4/      int i,n;

/5/      int sum;

/6/      float average;

 

/7/      printf("Please input the number of students (n)  =?, s.t. 1=<n<=300   ");

/8/      scanf("%d",&n);

 

/9/      sum=0;

/10/     for (i=0;i<n;i++){

/11/         printf("data[%d]=?",i);

/12/         scanf("%d",&score[i]);

/13/         sum=sum+score[i];

/14/         }

/15/      printf("sum=%d  \n",sum);

 

/16/      average=(float)sum/n;

/17/      printf("average=%f\n",average);

/18/      printf("average=%d\n",(int)average);

 

/19/    }

 

/30/  Please input the number of students (n)  =?, s.t. 1=<n<=300   3

/31/  data[0]=? 13

/32/  data[1]=? 2

/33/  data[2]=? 5

/34/  sum=20 

/35/  average=6.666667

/36/  average=6

 これは,n 人の試験データの和を求めて,その平均点を求めるプログラムです.

 16行目が示すことは,sum が元々持っていた整数型の値を実数型に流し込む,変換するということ,その実数化された値を n で割れば,実数の平均値 average が,35行目の通り得られることです.
 
 18行目が示すことは,average が持っていた実数型の値を整数型に流し込む,変換するということ,その整数化された値を,36行目の通り表示することです.
 

       
 

type casting 

型キャスト,型変換  

cast

(ある方向に向けて)投げる
 

castig 

 
配役  
  broadcast 放送  
  broadcaster,
caster  
   
  die castingは,   鋳造(ちゅうぞう)  
  die 「金型」  
       
  implicit 暗黙的な  
  explicit 明示的な  
       
  type