C言語は、皆さんがご存じのように、型の定義にきびしい言語だ。
そのため、プログラムが想定する型と異なる型を扱うには、細心の注意が必要となる。
C言語で扱う型には、以下のようなものがある。
種類 | 名前 | サイズ | 値の範囲 |
文字型 | char | 1バイト | -128 ~ 127 |
unsigned char | 1バイト | 0 ~ 255 | |
整数型 | short int | 2バイト | -32768 ~ 32767 |
unsigned short int | 2バイト | 0 ~ 65535 | |
int | 4バイト | -2147483648 ~ 2147483647 | |
unsigned int | 4バイト | 0 ~ 4294967295 | |
long int | 4バイト | -2147483648 ~ 2147483647 | |
unsignde long int | 4バイト | 0 ~ 4294967295 | |
浮動小数点型 | float | 4バイト | 3.4E-38 ~ 3.4E+38 |
double | 8バイト | 1.7E-308 ~ 1.7E+308 |
だが、厳しいと言いつつも、寛大なところもある。
コンピュータ言語の仕様なので、「優しい」とか「厳しい」など、感情の入る余地はないかもしれない。
ただ、プログラムを扱うのも、感情を持った人間だ。
以下のような仕様には、やはり「優しさ」を感じてしまう。
[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センチメートルです
ということで、問題なく出力することができる。
コメント