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
You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.