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:

craf said...

http://developer.apple.com/documentation/MusicAudio/Reference/CoreAudioDataTypesRef/Reference/reference.html#//apple_ref/doc/uid/TP40004488-CH4-SW3こんなふうに使われてたりします。
そのうち管理に困りそうな気もするんですが…。