通常、Cでは、変数宣言でデータの種類をコンピューターに伝える必要があります。たとえば、次のプログラムでは、2つの浮動小数点数XとYの合計を出力します。
#include<stdio.h>
main()
{
float X=5.2;
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
変数Xの型をコンパイラーに伝える必要がありました。
- コンパイラ
X
はそれ自身で型を決定できませんか?
はい、これを行うとできます:
#define X 5.2
コンパイラーに次のようなタイプを伝えることなく、プログラムを作成できるようになりX
ました。
#include<stdio.h>
#define X 5.2
main()
{
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
したがって、C言語には何らかの種類の機能があり、それを使用してデータのタイプを独自に判別できることがわかります。私の場合、それX
はfloat型であると判断されました。
- main()で何かを宣言するとき、なぜデータのタイプに言及しなければならないのですか?なぜコンパイラは、自身の中に変数のデータ型を判断することはできません
main()
、それはでませんよう#define
。
#define X 5.2
とX
、変数ではなく定数になり5.2
ますX
。したがって、プリプロセッサで指定した場所に文字通り置き換えられます。再割り当てできませんX
。
auto
は実際にあなたが望むことをします)。一方、コードが何をしているのか知っていて、実際に他の何かを入力したと思う場合、このような静的型付けは、大きな問題になる前にエラーを早期にキャッチします。すべての言語は、静的型付け、型推論、動的型付けのバランスを取ります。いくつかのタスクでは、余分な入力は実際に価値があります。他の人にとっては、無駄です。
5.2
あるdouble
最初のプログラムは、二重リテラルを丸めて、float
5.1背面の第二ラウンドの二重表現しながら、浮動小数点数としてそれらを追加し、その後、精度double
とに追加double
使用して値5.2double
に加えを、その後にその計算結果を丸めるfloat
精度。丸めはさまざまな場所で行われるため、結果が変化する可能性があります。これは、他の点では同一のプログラムの動作に影響を与える変数のタイプのほんの一例です。