2009-04-21

multicharacter literalについて

C++には、multicharacter literalというものが存在する。これはCharacter literalの一種で、多くのC++プログラマは知らないであろうし、また、知らなくても、問題はない仕様である。

C++03において、普通のプログラマが知っているべきCharacter literalsは以下の通り。

// ordinary character literal
char a = 'a' ;

// wide-character literal
wchar_t b = L'b' ;

実は、character literalは、もう一種類、存在する。それが、multicharacter literalである。

// multicharacter literal
int x = 'abc' ;

このように、シングルクオート(single quote)で囲んだ、複数の文字は、multicharacter literalになる。その型は、intである。その値は、実装依存(implementation defined)な値である。

一体、このmulticharacter literalが、なんの役に立つのか、私には分からない。なぜなら、値は実装依存なので、コンパイラ間で値が同じだという保証はない。第一、すべてのmulticharacter literalに対して、同じ値を返すコンパイラがあったとしても、規格準拠だと思われる。不思議不思議。

1 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.