Code Bye

c++ 怎么样自定义数值后缀

在C++中,数字表达提供了一系列的后缀进行表示,如下:
u或U  表示数字是无符号整型数,如:123u,但并不说明是长整型还是短整型

l或L  表示数字是长整型数,如:123l;而123ul就是无符号长整型数;而34.4l就是长双精度浮点数,等效于双精度浮点数

i64或I64  表示数字是长长整型数,其是为64位操作系统定义的,长度比长整型数长。如:43i64

f或F  表示数字是单精度浮点数,如:12.3f

e或E  表示数字的次幂,如:34.4e-2就是0.344;0.2544e3f表示一个单精度浮点数,值为254.4

   这种数值后缀的方法怎么样自定义呢?例如本人想定义一个HL代表长整数类型,如:234567890876534895682756HL,代表一个长整数类型,问一下该怎么样实现这个自定义呢?

解决方案

15

C++11 的 User-defined literals

25

///要求 ReturnType 定义了+,* 等运算符
constexpr ReturnType operator “”HL(const char* s){
Returntyoe r(0);
int sgn =1;
if(*s==”+” ){s++;sgn=1;}
else (s==”-“){s++;sgn=-1;}
while(*s){
r*=10;
r+=*s-“0”
s++; ;
}
return r*sgn;

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c++ 怎么样自定义数值后缀