0

以下に示すように、この手順には 2 つのパラメーターがあります。私はそれらが両方とも整数であることを望みます。ただし、整数以外でプロシージャをテストしたところ、まだコンパイルされていました! なんで?

 create procedure int_arith( p_1 int, p_2 int)
 begin
  select coalesce(p_1 + p_2, 'Null entry') addition;
 end;
 #

 call test.a03_int_arith(10,3.3)\G

結果は次のとおりです。

        addition: 13
4

1 に答える 1

1

一部の言語では、double を int にプロモートすることが有効です (型変換を参照)。何が起こっているかというと、この 3.3 では、インタープリター (コンパイラーは何でも) が double を見て、それを整数に切り捨てます (暗黙的に double を int にキャストします)。

于 2012-10-05T19:45:07.680 に答える