是否有任何C ++风格指南谈论数字文字后缀?

时间:2012-05-04 23:23:58

标签: c++ coding-style literals

在我读过的所有C ++样式指南中,我从未见过有关数字文字后缀的任何信息(即3.14f0L等)。

问题

  1. 是否有任何风格指南可以讨论这些用法,或者是否有一般惯例?

  2. 我偶尔会在图形编程中遇到f后缀。在编程领域的类型中是否存在使用趋势?

4 个答案:

答案 0 :(得分:8)

我所知道的唯一已建立的惯例(有些已确立)始终使用L而不是l,以避免被误认为是1。除此之外,它几乎是在您需要时使用您需要的东西。

另请注意,C ++ 11允许用户定义的文字具有用户定义的后缀。

答案 1 :(得分:4)

我找不到一般风格指南。我使用大写字母,我很挑剔使用F表示浮点文字而L表示长双精度。我还使用适当的后缀来表示整数文字。

我假设您知道这些后缀的含义:3.14Ffloat字面值,12.345是双字面值,6.6666L是长双字面值。

对于整数:UunsignedLlongLLlong longUL之间的顺序并不重要,但我总是放UL,因为我声明了这样的变量unsigned long

如果为一种类型的变量指定另一种类型的文字,或者为另一种类型的函数参数提供一种类型的数字文字,则必须进行强制转换。使用正确的后缀可以避免这种情况,并且与static_cast在调用强制转换时非常有用。数字文字后缀的一致使用是很好的风格,避免了数字意外。

人们对于大小写是否最好是不同的。选择一种看起来不错的风格并保持一致。

答案 2 :(得分:0)

用于C ++ 03语言的MISRA C ++ 2008在规则M2-13-3中规定(至少,如本Autosar document所述)

  

后缀“ U”   适用于所有八进制或十六进制   无符号类型的整数文字。

链接的文档也与JSF-AV 2005和HIC ++ v4.0相比,所有这四个标准要求后缀均为大写。

尽管如此,我找不到一条规则(但我手头没有MISRA C ++的纸质副本)指出要在需要时使用后缀。但是,IIRC在MISRA C ++中只有一个(或者可能只是我以前的公司编码准则……)

答案 3 :(得分:-1)