在我读过的所有 C++ 风格指南中,我从未见过任何关于数字文字后缀(即3.14f
, 0L
等)的信息。
问题
是否有任何风格指南讨论那里的用法,或者是否有一般约定?
f
我偶尔会在图形编程中遇到后缀。编程领域类型的使用是否有任何趋势?
在我读过的所有 C++ 风格指南中,我从未见过任何关于数字文字后缀(即3.14f
, 0L
等)的信息。
问题
是否有任何风格指南讨论那里的用法,或者是否有一般约定?
f
我偶尔会在图形编程中遇到后缀。编程领域类型的使用是否有任何趋势?
我知道的唯一已建立的约定(无论如何都已建立)是始终使用L
而不是l
,以避免将其误认为是1
. 除此之外,这几乎是在需要时使用所需内容的问题。
另请注意,C++ 11 允许带有用户定义后缀的用户定义文字。
我没有找到通用的样式指南。我使用大写字母,我对使用 F 表示浮点文字和 L 表示 long double 很挑剔。我还为整数文字使用了适当的后缀。
我假设您知道这些后缀的含义:3.14F
是float
文字,12.345 是双文字,6.6666L 是长双文字。
对于整数:U
is unsigned
, L
is long
, LL
is long long
。U
和s之间的顺序L
无关紧要,但我总是放UL
,因为例如我声明了这样的变量unsigned long
。
如果您为一种类型的变量分配另一种类型的文字,或者为另一种类型的函数参数提供一种类型的数字文字,则必须进行强制转换。使用适当的后缀可以避免这种情况,并且与 static_cast 对调用强制转换很有用一样。一致地使用数字文字后缀是一种很好的风格,可以避免数字意外。
人们对小写还是大写最好有不同的看法。选择一种对您来说看起来不错的风格并保持一致。
CERT C 编码标准 建议使用大写字母:
DCL16-C。使用“L”而不是“l”来表示长值
小写字母 l(ell)很容易与数字 1(一)混淆。当指示整数文字常量是长值时,这可能会特别令人困惑。该建议类似于DCL02-C。使用视觉上不同的标识符。
同样,当指示整数文字常量是 long long 值时,您应该使用大写的 LL 而不是小写的 ll。
用于 C++03 语言的 MISRA C++ 2008 在规则 M2-13-3 中声明(至少,如本Autosar 文档所引用的那样),
“U”后缀应应用于所有无符号类型的八进制或十六进制整数文字。
链接的文档还与 JSF-AV 2005 和 HIC++v4.0 进行了比较,所有这四个标准都要求后缀为大写。
尽管如此,我还是找不到一条规则(但我手头没有 MISRA C++ 的硬拷贝)规定应在需要时使用后缀。但是,IIRC 在 MISRA C++ 中有一个(或者可能只是我以前的公司编码指南……)
网络搜索“c++ numeric suffixes”返回:
http://cpp.comsci.us/etymology/literals.html
http://www.cplusplus.com/forum/general/27226/
http://bytes.com/topic/c/answers/758563-numeric-constants
这些是你要找的吗?