unsigned long 和 unsigned long long 有什么区别?

2024-01-30

我预计尺寸会有所不同。但两者都显示 8 字节。

#include <iostream>
using namespace std;
int main()
{
    cout<<"Size of long:"<<sizeof(unsigned long)<<"\n";
    cout<<"Size of Long Long:"<< sizeof(unsigned long long)<<"\n";
}

Output:
Size of long:8
Size of Long Long:8

它们是两种不同的类型,即使它们在某些特定实现中碰巧具有相同的大小和表示形式。

unsigned long要求至少为 32 位。unsigned long long要求至少为 64 位。 (实际上,这些要求是根据它们可以代表的值的范围来表述的。)

正如您所看到的,这与它们具有相同的大小是一致的,只要该大小至少为 64 位即可。

在大多数情况下,它们是不同类型这一事实并不重要(除非您不能依赖它们都具有相同的值范围)。例如,您可以分配一个unsigned long long to an unsigned long对象,并且值将被隐式转换,可能会丢失一些信息。同样,您可以通过unsigned long long函数的参数期望unsigned long(除非该函数是variadic, like printf;那么需要显式转换)。

但它确实很重要的一种情况是当你有pointers。类型unsigned long* and unsigned long long*它们不仅不同,而且不兼容赋值,因为不存在从一种到另一种的隐式转换。例如这个程序:

int main()
{   
    unsigned long*      ulp  = 0;
    unsigned long long* ullp = 0;
    ulp = ullp; // illegal
}

当我用 g++ 编译它时,会产生以下结果:

c.cpp: In function ‘int main()’:
c.cpp:5:11: error: cannot convert ‘long long unsigned int*’ to ‘long unsigned int*’ in assignment

还有一个区别:C++ 标准没有添加long long and unsigned long long类型直到 2011 年才出现。C 在 1999 年标准中添加了它们,并且 C++2011 之前(和 C99 之前)编译器将它们作为扩展提供的情况并不罕见。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unsigned long 和 unsigned long long 有什么区别? 的相关文章

  • 通过 VLA 数组跳转到 goto 时出现分段错误

    以下示例演示了该问题 include
  • C# 中的 Culture 相当于 Java 中的 Locale 吗?

    C 使用文化的概念 这在操作上与 Java 中的 Locale 类似吗 或者底层概念是否存在显着差异 从文化而不是语言环境的角度进行工作是一种寻找正确抽象层次的尝试 从以类似方式做事的人群的角度来考虑事物 而不是谈论地理区域和语言 并有点疯
  • 静态成员函数与C语言绑定?

    以下 C 代码可使用 Visual C 和 g 进行编译 struct S static void foo extern C void S foo struct T static void foo extern C void T foo a
  • C 中的分段错误

    我需要用 0 填充二维数组 但编译后的程序会出现此错误 怎么了 int main int vert 1001 1001 int hor 1001 1001 int dudiag 1416 1416 int uddiag 1416 1416
  • 当“”可以分配给std::string时,为什么有“clear”方法?

    一个可以用string clear函数清空字符串 也可以使用空双引号 来执行此操作 有什么不同 当您分配一个空字符串时 编译器必须在数据部分存储一个空的 C 字符串 并创建代码以将指向它的指针传递给赋值运算符 然后 赋值运算符必须从数据部分
  • 对相当大的整数的大集合的操作的快速实现

    描述 我实现了以下类 LabSetInt64 参见下面的代码 这里的目标是尽可能快地操作大量大整数 最多 10M 的值 我的主要要求集中在 至关重要 尽快获取集合的大小 基数 重要 能够非常快速地迭代一组集合 所以 从下面的实现开始 我还有
  • 如何获取任意类型的默认值

    在 C 中我可以写这样的东西 class AnyThing
  • 按位非运算符

    为什么要按位运算 0 打印 1 在二进制中 不是0应该是1 为什么 你实际上很接近 在二进制中 不是0应该是1 是的 当我们谈论一位时 这是绝对正确的 然而 一个int其值为0的实际上是32位全零 将所有 32 个 0 反转为 32 个 1
  • .NET 中 IEqualityComparer 中 GetHashCode 的作用是什么?

    我试图了解 IEqualityComparer 接口的 GetHashCode 方法的作用 下面的例子取自MSDN using System using System Collections Generic class Example st
  • “volatile void function( ... )” 做了什么?

    我见过从语法角度来看 C 函数中 volatile 关键字有多少种用法 https stackoverflow com questions 7643528 how many usage does volatile keyword have
  • 使用 for 循环创建链表

    这是我的结构 struct ListItem int data struct ListItem next 假设链表的第一个节点的 data 0 我想编写一个 for 循环来创建大小为 5 的链表 但我不知道如何工作 我尝试了以下方法 int
  • 复杂的 C 声明

    我刚刚在互联网上浏览了一些代码 发现了这个 float foo SIZE SIZE 我如何阅读这份声明 是否有一套特定的规则来阅读如此复杂的声明 我有一段时间没做这个了 从 开始foo然后向右走 float foo SIZE SIZE fo
  • C语言中如何将整数转换为字符? [复制]

    这个问题在这里已经有答案了 C语言中如何将整数转换为字符 C 中的字符已经是数字 字符的 ASCII 代码 无需转换 如果要将数字转换为相应的字符 只需添加 0 即可 c i 0 0 是 ASCii 表中的一个字符
  • C# 编译器编译 .txt .obj .java 文件

    using System class Program public static void Main Console WriteLine Hello World Console ReadLine 我将文件另存为1 java 2 obj an
  • 使用std::begin()、std::end()将ArrayXd转换为stl向量,

    在我看来我应该能够使用std begin and std end 转换ArrayXd to std vector
  • 序列化时如何跳过 xml 声明?

    我正在尝试输出一个没有 xml 头的 xml 文件 例如 我试过 Type t obj GetType XmlSerializer xs new XmlSerializer t XmlWriter xw XmlWriter Create c
  • C# 记录类型:记录子类之间的相等比较

    给定父记录类型 public record Foo string Value 和两个记录子类Bar and Bee我想知道是否可以实施Equals在基类中 因此 Foo Bar 或 Bee 的实例都被考虑equal基于Value 两者都与E
  • 即使对于新上下文,OnModelCreating 也仅调用一次

    我有多个相同但内容不同的 SQL Server 表 在编写代码优先 EF6 程序时 我尝试为每个程序重用相同的数据库上下文 并将表名称传递给上下文构造函数 然而 虽然每次都会调用构造函数 但尽管每次都是从 new 创建数据库上下文 但 On
  • 如何通过Task.ContinueWith创建传递?

    我想在原始任务结束时添加一个任务 但想保留原始结果和类型 附加任务仅用于记录目的 例如写入控制台等 例如 Task Run gt DateTime Now Hour gt 12 Hey throw new Exception Continu
  • 如何使用字符串的值将字符串转换为 wstring?

    我是 C 新手 我有这个问题 我有一个名为 DATA DIR 的字符串 需要将其格式化为 wstring string str DATA DIR std wstring temp L s str Visual Studio 告诉我没有与参数

随机推荐

  • 在加载和 Ajax 加载的内容上运行 JS 代码

    请看这个 HTML 代码 div class grid h2 First h2 p Second p div div class grid h2 First h2 p Second p div 我可以使用以下代码更改页面加载时元素的顺序 g
  • C++ lambda 函数的默认调用约定是什么?

    下面的代码是用VC 2012编译的 void f1 void stdcall void f2 void cdecl void cdecl h1 void stdcall h2 int main f1 h1 error C2664 f2 h2
  • Azure - 一个“块 blob”是否被视为一个文件?

    问题背景 这可能是一个简单的问题 但我找不到答案 我刚刚开始使用 Azure 存储 用于存储图像 想知道一个 blob 是否最多可容纳一个文件 这是我的容器 名为fmfcpics 在容器内我有一个名为的块 blobmyBlob其中我有一张图
  • CA2227 的解决方案还是更好的方法?

    我仅使用代码分析来清理 组织并确保针对特定警告的所有实例全局执行这些更改 我已经进入决赛了 比赛是 CA2227 CA2227 集合属性应为只读 将 更改为 通过删除属性设置器来只读 请注意 这是用于 EDI 文档的映射 这些类代表 EDI
  • 降落伞分段错误 - pygame 到 py2exe

    我正在使用 GUI2Exe 将我的 python pygame 游戏编译为 exe 我的字体模块有问题 使用 python 2 7 和 GUI2Exe 中的 py2exe 选项 我已经将 python pygame 和 py2exe 更新为
  • Chrome 的 colspan 和 border 错误?

    在下面的示例中 右侧单元格的顶部有一个边框 它只出现在 Chrome 中 是 Chrome 的 bug 吗 HTML CSS html body height 100 table border collapse collapse width
  • 在 Flutter 中重新发送 OTP 代码 Firebase 电话身份验证

    这可能是重复的 但任何其他线程都没有为我提供正确的答案 有关于 android 原生语言的答案 但没有关于 Flutter dart 的答案 我有以下有效方法 但如果我想将 OTP 重新发送到用户电话号码 我该怎么做 只需一个简单的示例代码
  • java jre 7u45 破坏了 classloader.getResources()?

    我有代码迭代 classLoader getResources META INF MANIFEST MF 的结果以返回类路径上的 jar 列表 从 1 6 0 18 一直到 1 7 0 40 这都工作得很好 现在 1 7 0 45 通过显示
  • EF Core Fluent API 配置防止 TPC 继承

    我有相互继承的模型 但我正在努力让流畅的 api 配置按照我想要的方式运行 假设我有一个基类 它定义了一些核心属性 public class Entity public int Id get set public string Title
  • 如何设置 Azure Devops 来构建 Devexpress XAF-XPO 项目?

    我想在 Azure Devops 中为 XAP 移动应用程序设置持续集成和部署 为了获得 CI CD 我需要设置 Azure Pipeline 来安装正确的包 文档中有一些信息托管您自己的 NuGet 源 https learn micro
  • 互换使用 std::string 和 QString

    我在我正在开发的图形和 GUI 组件软件系统中广泛使用 Qt 然而 对于大多数内部算法和数据处理来说 Qt 发挥的作用较小 我经常会遇到从 std string 转换为 QString 的需要 反之亦然 我的倾向是尽可能使用 std str
  • Git 元数据 - 有没有办法添加独立于每个分支的 git 元数据?

    最终目标 我想要由 Git 跟踪的文件 但让这些文件成为所有分支的版本相同 如果您 gitignore 文件 这些文件对于所有分支都是相同的 但不幸的是不会被跟踪 当我跑步时git push或类似的 我需要这些文件在存储库等之间传递 例如
  • RubyMine 按路径搜索文件项目

    在 SublimeText 2 中我可以这样做 cmd t 然后输入文件名或文件夹名称 然后显示结果 是与我正在搜索的术语匹配的文件与我正在搜索的术语的子文件夹中的文件相匹配的文件 例如 如果我的目录结构如下所示 models users
  • Python:如何不等待线程完成才能继续? [复制]

    这个问题在这里已经有答案了 所以我有一些代码等待 X 发生 然后创建一个线程并处理电子邮件 我正在寻找一种方法 让代码继续等待 X 即使 processEmail 正在另一个线程中发生 但目前代码只是等待线程完成 然后再等待 X 再次发生
  • Blazor Web Assembly 应用程序 .Net Core 托管:发布运行时错误

    我使用 NET 5 0 RC1 Framework 创建了一个托管在 NET Core 应用程序内的简单 Blazor Web Assembly 项目 并在 Visual Studio 2019 预览版中的向导过程中添加了授权 它在调试中完
  • 如何在 runAllManagedModulesForAllRequests 设置为 true 的情况下在 IIS 7 中禁用 flv 文件的 gzip 压缩?

    我有一个在 IIS 7 上运行的 ASP NET 3 5 网站 我希望将我的静态内容 如 css 文件 javascript 文件等 和动态内容 net 页面 进行 gzip 压缩 问题是我需要确保 flv 文件 Flash 视频文件 不是
  • 未安装指定平台工具集(v110)

    我有一个最初使用 VS2010 创建的解决方案 当我使用 VS 2012 打开它时 它要求我做一些转换 我同意了 现在我使用 VS 2010 再次打开解决方案 当我尝试构建它时出现错误 错误 MSB8008 指定的平台工具集 v110 未安
  • 与类相同类型的类变量

    在学习 Python 时 弄乱了典型的 Point 类示例 我注意到由于某种原因 我不能拥有与类相同类型的类级别 静态变量 例如 class Point ORIGIN Point doesn t work def init self x 0
  • 撤消“git Push”

    这是我在我的上所做的应该是稳定的分支 git rebase master First rewinding head to replay your work on top of it Fast forwarded alpha 0 3 0 to
  • unsigned long 和 unsigned long long 有什么区别?

    我预计尺寸会有所不同 但两者都显示 8 字节 include