10

在我读过的所有 C++ 风格指南中,我从未见过任何关于数字文字后缀(即3.14f, 0L等)的信息。

问题

  1. 是否有任何风格指南讨论那里的用法,或者是否有一般约定?

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

4

5 回答 5

9

我知道的唯一已建立的约定(无论如何都已建立)是始终使用L而不是l,以避免将其误认为是1. 除此之外,这几乎是在需要时使用所需内容的问题。

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

于 2012-05-04T23:31:41.573 回答
5

我没有找到通用的样式指南。我使用大写字母,我对使用 F 表示浮点文字和 L 表示 long double 很挑剔。我还为整数文字使用了适当的后缀。

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

对于整数:Uis unsigned, Lis long, LLis long longU和s之间的顺序L无关紧要,但我总是放UL,因为例如我声明了这样的变量unsigned long

如果您为一种类型的变量分配另一种类型的文字,或者为另一种类型的函数参数提供一种类型的数字文字,则必须进行强制转换。使用适当的后缀可以避免这种情况,并且与 static_cast 对调用强制转换很有用一样。一致地使用数字文字后缀是一种很好的风格,可以避免数字意外。

人们对小写还是大写最好有不同的看法。选择一种对您来说看起来不错的风格并保持一致。

于 2012-05-04T23:33:50.607 回答
3

CERT C 编码标准 建议使用大写字母:

DCL16-C。使用“L”而不是“l”来表示长值

小写字母 l(ell)很容易与数字 1(一)混淆。当指示整数文字常量是长值时,这可能会特别令人困惑。该建议类似于DCL02-C。使用视觉上不同的标识符

同样,当指示整数文字常量是 long long 值时,您应该使用大写的 LL 而不是小写的 ll。

于 2016-12-05T15:39:04.927 回答
0

用于 C++03 语言的 MISRA C++ 2008 在规则 M2-13-3 中声明(至少,如本Autosar 文档所引用的那样),

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

链接的文档还与 JSF-AV 2005 和 HIC++v4.0 进行了比较,所有这四个标准都要求后缀为大写。

尽管如此,我还是找不到一条规则(但我手头没有 MISRA C++ 的硬拷贝)规定应在需要时使用后缀。但是,IIRC 在 MISRA C++ 中有一个(或者可能只是我以前的公司编码指南……)

于 2018-06-19T13:00:02.360 回答
-2

网络搜索“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

这些是你要找的吗?

于 2012-05-04T23:31:06.720 回答