型変換について

C言語

C言語は、皆さんがご存じのように、型の定義にきびしい言語だ。
そのため、プログラムが想定する型と異なる型を扱うには、細心の注意が必要となる。
C言語で扱う型には、以下のようなものがある。

種類名前サイズ 値の範囲
文字型char1バイト -128 ~ 127
unsigned char1バイト0 ~ 255
整数型short int2バイト-32768 ~ 32767
unsigned short int 2バイト0 ~ 65535
int4バイト-2147483648 ~ 2147483647
unsigned int4バイト0 ~ 4294967295
long int4バイト-2147483648 ~ 2147483647
unsignde long int4バイト0 ~ 4294967295
浮動小数点型 float4バイト3.4E-38 ~ 3.4E+38
double8バイト1.7E-308 ~ 1.7E+308
※ E+38とは、10の38乗を表す

だが、厳しいと言いつつも、寛大なところもある。
コンピュータ言語の仕様なので、「優しい」とか「厳しい」など、感情の入る余地はないかもしれない。
ただ、プログラムを扱うのも、感情を持った人間だ。
以下のような仕様には、やはり「優しさ」を感じてしまう。

[C言語の仕様]
大きなサイズの型には、小さなサイズの型の値をキャストなどを行わなくても代入することができる。
以下に、サンプルコードを示す。

#include <stdio.h>
    
int main(void){

    int inumber = 30;
    double dnumber;
    
    printf("1フィートは約%dセンチメートルです\n", inumber);
    
    dnumber = inumber;
    
    printf("1フィートは約%fセンチメートルです\n", dnumber);
    
    return 0;
}

実行結果は以下となる。

1フィートは約30センチメートルです
1フィートは約30.000000センチメートルです

ということで、問題なく出力することができる。

コメント

タイトルとURLをコピーしました