以下のコードはwell-formedである。
int x = 0xf+1 ;
以下のコードはill-formedである。
int x = 0xe+1 ;
何故か。
理由は、0xf+1は、0xf, +, 1という3つのトークンとして認識されるが、0xe+1は、一つのpp-numberトークンとして認識されるためだ。これには、浮動小数点数リテラルの指数の文法が影響している。
具体的には、"数値 e 符号"という組み合わせの文字列が引っかかる。
そのため、16進数のeに1を加えた数を表現する場合は、eと+の間に空白を開けなければならない
int x = 0xe +1 ;
-の場合も同様。
ドワンゴ広告
ドワンゴは本物のC++プログラマーを募集しています。
CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0
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.