「酒を飲みながらグダグダ書いてる」
わけなんですが(うわー、マジメなみなさんゴメンナサイ!!!ダメ人間なんです><)
昨日の日記は、
「書いた後に1回くらい読み直せ!!!」
と思ったわけですよ・・・ほんとに>自分
信じちゃいけませんよ~
「一緒に考えてください!!!」
そして僕を真っ当な人間に更正させてください。。。
そういえば、ぽぴ王子さんにマイ○クさんになっていただきました。
「出身が一緒の市、しかも隣町。」
というありえない状況でして・・・・
次回勉強会にてご挨拶させてください・・・
というわけで一農民としては【ぽぴ王子さん】との主従関係を気にする【ふ】ですが、
今回のお題は「Literals」@C++の中から「実数リテラル」についてです。
教科書は同じく「ISO/IEC 14882:2003(E)」です。
ではさっそく。
---------------------------------------------------------------
floating-literal:
fractional-constant exponent-part(opt) floating-suffix(opt)
digit-sequence exponent-part floating-suffix(opt)
fractional-constant:
digit-sequence(opt) . digit-sequence
digit-sequence .
exponent-part:
e sign(opt) digit-sequence
E sign(opt) digit-sequence
sign: one of
+ -
digit-sequence:
digit
digit-sequence digit
floating-suffix: one of
f l F L
---------------------------------------------------------------
いっこずつ見て行きましょう。
---------------------------------------------------------------
floating-literal:
fractional-constant exponent-part(opt) floating-suffix(opt)
digit-sequence exponent-part floating-suffix(opt)
---------------------------------------------------------------
さっそくですが・・・
floating-literal:(実数リテラル)は
fractional-constant exponent-part(opt) floating-suffix(opt):ちょっとバラすと・・・
fractional-constant:小数部の定数(詳細は後述)
exponent-part(opt):指数部(オプション)
floating-suffix(opt):浮動少数サフィックス(オプション)から構成されているというわけですね。
もしくは、
digit-sequence exponent-part floating-suffix(opt):数値の連続+指数部+浮動少数サフィックス(オプション)になります。
---------------------------------------------------------------
fractional-constant:
digit-sequence(opt) . digit-sequence
digit-sequence .
---------------------------------------------------------------
fractional-constant:小数部の定数・・・これの定義はというと、
digit-sequence(opt) . digit-sequence:数値(オプション)+.+数値ですね。
1.1111・・・もあれば、
.1111・・・・表記もOKということですね。
また、
digit-sequence .:数値+.もありなんですね。
さすがにこれはあまり使わないなぁ・・・と、
double a = 1.; (VC2005で確認)
ちゃんと、1.000・・・になってました。
---------------------------------------------------------------
exponent-part:
e sign(opt) digit-sequence:
E sign(opt) digit-sequence:
---------------------------------------------------------------
exponent-part:指数部の定義はというと。。。
e sign(opt) digit-sequence:
E sign(opt) digit-sequence:
[eE]どちらか+正負記号(オプション)+10進数値の列
ということですね。
---------------------------------------------------------------
sign: one of
+ -
---------------------------------------------------------------
これは単純ですね。
正負の記号は[+-]どちらかであるということですね。
---------------------------------------------------------------
digit-sequence:
digit
digit-sequence digit
---------------------------------------------------------------
数値の列は再帰再帰でいつまでもOKw
---------------------------------------------------------------
floating-suffix: one of
f l F L
---------------------------------------------------------------
そして実数のサフィックスはというと・・・
[fFlL]どれかなわけですね。
今日はあっさりなんで少し文章も読みましょうか。
---------------------------------------------------------------
The type of a floating literal is double unless explicitly specified by a suffix.
---------------------------------------------------------------
特にサフィックスの指定がなければdoubleだよー、と謳っています。浮動少数ではfloatではなくdoubleが基本であることがこんなとこでもでてますね。
---------------------------------------------------------------
The suffixes f and F specify float, the suffixes l and L specify long double.
---------------------------------------------------------------
サフィックスの[fF]どちらか指定があったらfloatにしますよ、[lL]どちらか指定があったらはlong doubleにしますよ、ってことですね。
>そして実数のサフィックスはというと・・・
>[fFlL]どれかなわけですね。
というわけで、あえて【FL】なんてサフィックスを付けてみました。
double d =11.11FL;
error C2059: 構文エラー : 'サフィックスが無効です。'
OKです!(って昨日からエラー出して何を喜んでいるのか。。。)