おぼえがき

過ちては則ち改むるにうんぬんかんぬん

キャストについて(C言語)

f:id:feci:20210810151051j:plain

C11

 

C11のキャストについて。

#include <stdio.h>

void main() {

  int aaa = 10ddd;
  float bbb = 10.55eee;
  char ccc = 'a'fff;

  eee = (float)aaa;  //float型変数eeeにaaaの値をキャストして代入
  fff = (char)aaa;   //char型変数fffにaaaの値をキャストして代入

  printf("%fと%c\n"eeefff);  //10.000000とNULL(値なし)

  ddd = (int)bbb;
  fff = (char)bbb;

  printf("%dと%c\n"dddfff);  //10とNULL(値なし)

  ddd = (int)ccc;
  eee = (float)ccc;

  printf("%dと%f\n"dddeee);  //97と97.000000

}

キャストとは、異なるデータ型の値を変数に代入する際に値のデータ型を合わせるためにおこなう処理のことです。

 

上記プログラムのようにキャストしたい値の頭にパレンティス(丸括弧)を付けて、その中に変換後のデータ型を記述します。

 

たとえば、上記の変数eeeはfloat型です。

そして変数aaaはint型であり、10の値が入っています。

なのでeeeにaaaを代入する際は、eee = (float)aaa; としてaaaの値をfloat型にキャストする必要があります。

 

 

ちなみに、キャストをしなくても代入できるデータ型の組み合わせもあります。

ただそのような場合でもキャストをしなければwarning(警告)がでる場合もありますし、なによりプログラムの読みやすさを考慮するならば、キャストはしたほうがいいでしょう。

 

 

以上です。