2012-04-19 10 views
1

これは非常に基本的かもしれませんが、私はその理由が非常に不思議です。一時的な値を格納するために使用されるデータ型は何に決まりますか?

異なるタイプの演算(int、floatなど)による乗算や除算など、さまざまな演算を処理する場合、どのデータ型を選択するのか例えば

、私は次の操作を実行した場合:

float a = 5/10; 

5と10は、一時的に、我々は分裂を行うint型に格納し、その後、我々が置かれているので、私は結果として「0」を取得しますそれはフロートの中にある。右?

しかし、私たちが代わりに行う場合:

float a = (float)5/10; 

私たちは、代わりに0.5を取得します。

このケースでは、floatがintよりも優先されるように意思決定する方法は?

+2

プログラミング言語を指定してください。 – SpeedCrazy

+0

違いはありますか?その場合、C言語ではどのように動作しますか? – chikuba

+1

@chikubaはい、違いはありますか? *非常に普及している* JavaScriptのように、いくつかの言語は "整数"を持っていません(JSでは '5/10'の結果は' 0.5'です)。それに応じて投稿/タイトルを更新してください。 -1は、あまり曖昧な抽象的な質問のためのものであり、詳細については答えられません。 –

答えて

2

このスニペットをご覧ください。

float a = 5/10; 

510は、デフォルトではC(JavaとC++とPython 2.xの)までの整数として表されます。それらは他の方法で格納するようには指定されていません。つまり、浮動小数点型の外観と一致しません。整数除算の結果、切り捨てられるので、毎回値0が得られます。第二のスニペットについて今

、浮動小数点ので

float a = 5.0/10; 

float a = (float)5/10; 

... C(またはJavaやC++やPython 2.xのは)としてそれを解釈します値が整数よりも高いランクの場合、整数をfloatに昇格させます。これはタイププロモーションと呼ばれます。あなたはそれについて少し読むことができますhere

1

コンパイラは通常、「あなたは何を意味するかを取得」しようとしないでください一回。

彼らは厳密なルールに従って、あなたが話すことをやっています。

ここでルールは次のとおりです。整数を別の整数で除算すると、整数が返されます。したがって、浮動小数点数を除算したい場合は、浮動小数点数を除算するだけです。

関連する問題