这有道理吗?
static_cast<long long>(1) == 1LL
static_cast<float>(1) =? 1F
是否有一种捷径可以为其他类型(例如浮动)进行铸造?非常感谢!
从 C++11 开始,您可以定义自己的文字。例如,您可以_F
像这样定义文字:
float operator"" _F(unsigned long long l)
{
return static_cast<float>(l);
}
int main()
{
auto a = 1_F;
static_assert(std::is_same<decltype(a), float>::value, "Not a float");
return 0;
}
这个答案描述了 C++11。用户定义的文字和某些类型在该语言的历史版本中不存在。
整数字面量可以不以任何内容结尾,L
, LL
, U
,UL
或分别给出, , , , orULL
的类型。如果你愿意,这些可以是小写的;如果需要表示值,实际类型可能比指定的更宽。int
long
long long
unsigned int
unsigned long
unsigned long long
浮点文字可以不以任何内容结尾,也可以分别给出、F
或类型。同样,如果您愿意,这些可以是小写的。L
double
float
long double
u
字符和字符串字面量可以不以、U
或开头,分别L
给出字符类型char
、或。字符串也可以用 UTF-8 编码来表示字符类型。char16_t
char32_t
wchar_t
u8
char
如果您发现奇怪的东西(例如123_km
比kilometres(123)
. 我不明白这一点,但如果你有兴趣,有人发布了一个例子。