我在哪里可以找到所有C++十进制类型指标?

Where could I find all the C++ decimal type indicator?

本文关键字:十进制 C++ 类型 在哪里      更新时间:2023-10-16

我在哪里可以找到所有C++十进制类型指示符,例如

long l = 0L;

我也知道 L U f d。还有其他人吗?我在哪里可以找到它们?如何明确表示无符号短?

您引用的此指标称为后缀

对于整数类型,有两种类型的后缀:

  1. 无符号后缀— 字符u或字符U
  2. 长后缀— 字符l或字符L长后缀— 字符序列ll或字符序列LL

对于整数文本,可以组合这些后缀(如ulull),以在同一文本中同时实现"无符号"和"长度"。

浮点类型也有后缀:fFlL

  1. 没有后缀的文字定义double
  2. fF定义float
  3. lL定义long double

还有用户定义的文本,您可以为其引入用户定义的后缀。

至于你关于unsigned short的第二个问题:short没有明确的后缀,所以你将不得不使用static_cast或C样式的强制转换。

另一种方法是定义一个用户定义的文字运算符,如下所示

unsigned short operator "" _ush(unsigned long long int a)
{
return static_cast<unsigned short>(a);
}

然后使用它来定义文字,如下所示:unsigned short a = 123_ush;

我已经使用此代码片段检查了它是否有效:

#include <iostream>
#include <string>
#include <typeinfo>
unsigned short operator "" _ush(unsigned long long int a)
{
return static_cast<unsigned short>(a);
}
int main()
{
std::string name;
bool equal = typeid(decltype(123_ush)) == typeid(unsigned short); // check that literal is indeed unsigned short
std::cout << equal;
}

有关我的回答中提到的内容的更多信息,我建议查看cpp首选项:整数文字,浮点文字,用户定义的文字

你不能。C++中没有所谓的unsigned shortshort字面

。您需要使用static_cast.

参考: https://en.cppreference.com/w/cpp/language/integer_literal

简短的列表是:

1.0 => double
1.0f => float
1 => int
1U => unsigned int
1L => long
1UL => unsigned long
1ULL => unsigned long long
1LL => long long

以下是前缀后缀的良好文档: https://www.geeksforgeeks.org/integer-literal-in-c-cpp-prefixes-suffixes/

您可以在 lex.literal 中找到内置文字词缀的完整列表。

我会引用完整的表格,但我们对此没有降价支持,所以这里有一个后缀列表:


来自 lex.icon/2 的整数后缀:

  • (无后缀)
  • uU
  • lL
  • uUlL
  • llLL
  • uUllLL

这些表示的确切类型取决于文字值的大小,但如果您查看表 7,您会发现没有后缀可以为您提供开箱即用的unsigned short


为了完整起见,以下是 lex.fcon 中的浮点后缀:

  • flFL中的任何一个。

f/F表示floatl/L表示long double。没有后缀表示double