首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数字文本上的ULL后缀

数字文本上的ULL后缀
EN

Stack Overflow用户
提问于 2012-01-11 03:26:12
回答 3查看 88.5K关注 0票数 78

我遇到过一些类似这样的代码:

代码语言:javascript
运行
复制
line += addr & 0x3fULL;

显然,“U”和“L”不是十六进制数字。我猜那个十六进制数字文字末尾的“ULL”意味着"Unsigned Long Long“--我说的对吗?(这种事情很难用谷歌搜索)如果是这样,那么这是数字上的某种后缀修饰符吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-11 03:27:56

gcc manual

ISO C99支持至少64位宽的整数的数据类型(.。。)。若要使类型为long long int的整数常量,请在该整数上添加后缀LL。若要使类型为unsigned long long int的整数常量,请在该整数上添加后缀ULL

这些后缀也被添加到C++11中的C++中,并且在此之前已经支持long long (双关语)作为编译器扩展。

票数 79
EN

Stack Overflow用户

发布于 2012-01-11 03:27:44

是的没错。

  • 0x前缀使其成为十六进制的literal.
  • ULL后缀,使其成为unsigned long long.

类型

票数 31
EN

Stack Overflow用户

发布于 2016-01-22 02:20:27

我提出了一个新的答案,因为我认识到当前的答案没有引用来自跨平台的来源。 LL**/**ll unsigned long long int [<unsigned long long int][<>C24>]标准规定,具有 后缀和LL**/**ll后缀的文字是类型为:的文字

U/u是无符号整数的C/C++后缀。

LL/lllong long整数的C/C++后缀,它是一个new type in C++11,要求长度至少为64位。

备注:

  1. 如果使用任何修饰符,则可以省略关键字int,例如unsigned long long。因此,这将把one定义为一个unsigned long long int,并且分配给它的任何数字都将是static_cast to unsigned long long intauto的出现。它将变量类型设置为声明时分配给它的类型。例如,因为2ULL是一个unsigned long long int文本,所以two将被定义为一个unsigned long long int:order引入了与订单无关的文本后缀。以前,U/u后缀必须位于任何大小后缀之前。但是在c++14中,后缀是以任何一种顺序接受的,所以现在因为3LLU是一个unsigned long long int文本,所以three将被定义为一个unsigned long long int
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8809292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档