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