intよりrankの低い整数型の値は、すべての値が表現できるのであれば、intに型変換できる。
あれ、long intとlong long intはどうなるのだろう。これらは、通常の整数型の値の型変換には定義されていない。
とすると、intからlongへの型変換は、integral promotionではなく、integral conversionになるのか? また、charからshortへの変換も、integral conversionなのか?
どうやら、そうなるようだ。これは、overload resolutionの順位にも影響するので、以下のようになる。
void f(short) ;
void f(int) ;
void f(long) ;
void f(long long) ;
int main()
{
char x = 0 ;
f(x) ; // call f(int)
}
なるほどなるほど、一瞬不思議に思ったが、当然だ。intを基本としているのだろう。
No comments:
Post a Comment