为了账号安全,请及时绑定邮箱和手机立即绑定

数字文字的ULL后缀

数字文字的ULL后缀

C++ C
精慕HU 2019-12-02 12:45:02
我遇到过这样的一些代码:line += addr & 0x3fULL;显然,“ U”和“ L”不是十六进制数字。我猜测十六进制数字文字末尾的“ ULL”表示“ Unsigned Long Long”-我正确吗?(这种事情很难用谷歌搜索)如果是的话,那么这是数字上的某种后缀修饰符吗?
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

从gcc 手册:


ISO C99支持至少64位宽的整数的数据类型,作为扩展,GCC在C90模式和C ++中支持它们。只需写long long int一个有符号整数或unsigned long long int一个无符号整数。要使type为整数常量long long int,请将后缀添加LL到整数。要使type为整数常量unsigned long long int,请将后缀添加ULL到整数。


查看完整回答
反对 回复 2019-12-02
?
忽然笑

TA贡献1806条经验 获得超5个赞

对,那是正确的。

  • 0x 前缀使它成为十六进制文字。

  • ULL后缀使其输入unsigned long long


查看完整回答
反对 回复 2019-12-02
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

我提出了一个新的答案,因为我认识到当前的答案并非来自跨平台来源。在C ++ 11条标准规定文字与UuLLll后缀是一种类型的文字:unsigned long long int [ 源 ]

Uu是无符号整数的C / C ++后缀。
LLlllong long整数的C / C ++后缀,它是C ++ 11中的新类型,并且要求长度至少为64位。

笔记:

  1. 例如int,如果使用任何修饰符,则可以省略关键字unsigned long long。因此,这将定义oneunsigned long long int,并分配给它的任何数量将static_castunsigned long long intunsigned long long one = 1

  2. c ++ 11标志着的到来auto。它将变量类型设置为声明时分配给它的类型。例如,因为2ULLunsigned long long int文字two将被定义为unsigned long long intauto two = 2ULL

  3. c ++ 14引入了与顺序无关的文字后缀。以前,Uu后缀必须在任何大小的后缀之前。但是大约在c ++ 14之后,后缀以任何一种顺序被接受,所以现在既然3LLUunsigned long long int文字three将被定义为unsigned long long intauto three = 3LLU


查看完整回答
反对 回复 2019-12-02
  • 3 回答
  • 0 关注
  • 1516 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信