In all of the C++ style guides I have read, I never have seen any information about numerical literal suffixes (i.e. 3.14f
, 0L
, etc.).
Questions
Is there any style guide out there that talks about there usage, or is there a general convention?
I occasionally encounter the
f
suffix in graphics programming. Is there any trend on there usage in the type of programming domain?
There is no general style guide that I've found. I use capital letters and I'm picky about using F for float literals and L for long double. I also use the appropriate suffixes for integral literals.
I assume you know what these suffixes mean:
3.14F
is afloat
literal, 12.345 is a double literal, 6.6666L is a long double literal.For integers:
U
isunsigned
,L
islong
,LL
islong long
. Order betweenU
and theL
s doesn't matter but I always putUL
because I declare such variablesunsigned long
for example.If you assign a variable of one type a literal of another type, or supply a numeric literal of one type for function argument of another type a cast must happen. Using the proper suffix avoids this and is useful along the same lines as static_cast is useful for calling out casts. Consistent usage of numeric literal suffixes is good style and avoids numeric surprises.
People differ on whether lower or upper case is best. Pick a style that looks good to you and be consistent.
The only established convention (somewhat established, anyway) of which I'm aware is to always use
L
rather thanl
, to avoid its being mistaken for a1
. Beyond that, it's pretty much a matter of using what you need when you need it.Also note that C++ 11 allows user-defined literals with user-defined suffixes.
MISRA C++ 2008 for the C++03 language states in rule M2-13-3 (at least, as cited by this Autosar document) that
The linked document also compares to JSF-AV 2005 and HIC++v4.0, all these four standards require the suffixes to be uppercase.
Nevertheless I can't find a rule (but I don't have a hardcopy of MISRA C++ at hand) that states that the suffixes shall be used whenever needed. However, IIRC there is one in MISRA C++ (or maybe was it just my former company coding guidelines…)
Web search for "c++ numeric suffixes" returns:
http://cpp.comsci.us/etymology/literals.html
http://www.cplusplus.com/forum/general/27226/
http://bytes.com/topic/c/answers/758563-numeric-constants
Are these what you're looking for?
The CERT C Coding Standard recommends to use uppercase letters: