首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

x64上的sizeof(int)?

在C/C++编程中,sizeof(int)表示整数类型int在x64上的大小。在x64架构上,int通常占用4字节(32位)的内存空间。

在C/C++中,sizeof操作符用于获取数据类型或对象所占用的内存字节数。例如,sizeof(int)表示整数类型int所占用的字节数。在32位系统上,sizeof(int)通常为4字节,而在64位系统上,sizeof(int)仍然为4字节。

请注意,sizeof操作符返回的是整数类型int的大小,而不是整数值。要获取整数值,请使用类型转换,例如int(x)static_cast<int>(x)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

sizeof 知多少? (

(字节) * 但实际,如果你再次试验一番,你会发现 sizeof(s1) 仍然是 12(字节)!...(s1) = 14 公式计算结果是14,但实际,如果你试验一下,sizeof(s1)大小应该是16,我们又遗漏了什么吗?...其实这里还有一个结构体连续存放问题 考虑结构体数组定义 S s[2],并且我们假设s起始地址是0,对于结构s[0]来说,其各个成员都在对齐内存地址,但是对于结构s[1]来讲,其各个成员就未必在对齐内存地址上了...ceil(sizeof’(s2, 2) / maxsizeof) maxsizeof = ceil(18 / 16) 16 = 32 套用之前公式,我们得到s2大小为32,但实际,试验后s2大小为...20,看来我们又再次遗漏了什么东西… 这次问题是出在我们之前总结公式,由于之前我们仅考虑了基本类型,所以公式中大量使用了sizeof(Mi)这种形式, 但实际,我们真正需要是alignof(Mi

89100
  • sizeof,终极无惑(

    MSDN解释为: The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a...实际sizeof计算对象大小也是转换成对对象类型计算,也就是说,同种类型不同对象其sizeof值都是一致。...聪明你開始思考了,char占1个字节,int占4个字节,那么加起来就应该是5。是这样吗?你在你机器试过了吗?或许你是对,但非常可能你是错!VC6中按默认设置得到结果为8。 Why?...为此,编译器默认会对结构体进行处理(实际其他地方数据变量也是如此),让宽度为2基本数据类型(short等)都位于能被2整除地址,让宽度为4基本数据类型(int等)都位于能被4整除地址,以此类推...联合体sizeof 结构体在内存组织是顺序式,联合体则是重叠式,各成员共享一段内存,所以整个联合体sizeof也就是每一个成员sizeof最大值。

    36510

    c语言sizeof()_sizeof函数用法

    常见使用方式: int a=10; int arr=[1,2,3]; char str[]="hello"; int len_a = sizeof(a); int len_arr = sizeof(arr...,一般会认为结果是:len_a=1,len_arr=3,len_str=5 实际结果是:len_a=4,len_arr=12,len_str=6 sizeof还可以这么用: printf("len_int...=%d,len_short=%d,len_double=%d", sizeof(int), sizeof(short), sizeof(double)); 获取某个数据类型所占用空间字节数。...sizeof实际是获取了数据在内存中所占用存储空间,以字节为单位来计数。 C语言会自动在在双引号””括起来内容末尾补上”\0″代表结束,ASCII中0号位也占用一个字符。...位系统指针占4字节,64位系统指针占8字节 cout << sizeof(arr) << endl; //解指针,因为arr指针指向时数组首元素,所以实际计算int类型数据所占用内存空间,int

    81710

    sizeof和strlen区别(strlen和sizeof用法)

    int b=sizeof(str); /*b=20;sizeof 计算则是分配数组str[20] 所占内存空间大小,不受里面存储内容影响 =========================...实际,用sizeof来返回类型以及静态分配对象、结构或数组所占空间,返回值跟对象、结构、数组所存储内容没有关系。...当数组名作为参数传入时,实际数组就退化成指针了。 它功能是:返回字符串长度。...parr里面存了什么(从parr[0]开始知道遇到第一个NULL结束);第二个结果实际本意是想计算parr所指向动态内存空间大小,但是事与愿违,sizeof认为parr是个字符指针,因此返回是该指针所占空间...int b=sizeof(str); //而b=20; >>>> sizeof 计算则是分配数组 str[20] 所占内存空间大小,不受里面存储内容改变。

    83820

    sizeof与strlen区别

    int   b=sizeof(str); /*b=20;sizeof 计算则是分配数组str[20] 所占内存空间大小,不受里面存储内容影响 ========================...实际,用sizeof来返回类型以及静态分配对象、结构或数组所占空间,返回值跟对象、结构、数组所存储内容没有关系。    ...当数组名作为参数传入时,实际数组就退化成指针了。     它功能是:返回字符串长度。...,这取决于parr里面存了什么(从parr[0]开始知道遇到第一个NULL结束);第二个结果实际本意是想计算parr所指向动态内存空间大小,但是事与愿违,sizeof认为parr是个字符指针,因此返回是该指针所占空间...int b=sizeof(str); //而b=20; >>>> sizeof 计算则是分配数组 str[20] 所占内存空间大小,不受里面存储内容改变。

    76430

    visual studio 2015x64位汇编

    最近在做一个东西,有少部分代码需要用汇编写,大部分都是c语言实现,而且还是x64程序。配置单独masm开发环境,独立编译然后链接过来,真实太费劲了,所以就想直接用visual studio吧。...vs64位编译器不支持内敛汇编了,只能写成单独asm文件,然后独立编译。下面就介绍怎么让让vs2015让项目支持对asm文件进行编译。...反正反汇编一x64代码都有这个东西 call myprint mov r10,g_iValue ; 此处使用中stdafx.h全局变量。...: extern "C" __int64 __stdcall func2(); 然后在main函数中调用: int main() { __int64 ret = func2(); printf...而在x64汇编中,两方面都发生了变化。一是前四个参数分析通过四个寄存器传递:RCX、RDX、R8、R9,如果还有更多参数,才通过椎栈传递。二是调用者负责椎栈空间分配与回收。

    1.1K20

    Windows x64x86重定向

    0x00 背景 搬砖过程中遇到一个很奇怪现象。写了一个程序利用命令regedit来读取注册表某项值,出现了一个奇怪现象:在某些电脑能读到值,在另一些电脑无法读取。...在x86机器,我们程序调用regedit路径是C:\windows\regedit.exe;而在x86_64,程序调用regedit路径是C:\windows\SysWOW64\regedit.exe...#include#includeint main(){ system("cmd"); return 0;} ?...说白了就是在64bit操作系统运行32bit程序。因为我们程序是32bit,所以在32bit程序中调用系统程序也是32bit。...正巧程序读取注册表键值在64bit版regedit可以读取,而在32bit版本regedit无法读取,这就造成了开头问题。

    2K80

    sizeof应用小陷阱

    本篇笔记主要介绍在项目开发中,使用sizeof一个要注意地方。...sizeof作用就是返回一个对象或者类型所占内存字节数。返回值是size_t,这个值依赖于编译系统,一般在嵌入式中我们常见是返回int型....如果将sizeof返回值付给一个类型不符变量,MISRA 规则会报警告。还有一点要注意,C99标准规定,函数、不能确定类型表达式以及位域(bit-field)成员不能被计算sizeof值。...由以上测试可以看到sizeof返回值在不同平台上不有不同结果,在实际应用中一定要注意,尤其是在32位系统,一定要小心应用sizeof,以免引起错误。这就是传说中字节对齐啊!...为此,编译器默认会对结构体进行处理,让宽度为2基本数据类型都位于能被2整除地址,让宽度为4基本数据类型都位于能被4整除地址,小小陷阱,希望不要掉进去哦O(∩_∩)O~

    76680

    sizeof(结构体)计算

    摘要: 经常被计算结构体sizeof给搞晕,于是找了个时间,静下心来,搞定它。 一、为什么结构体计算这么乱?...4、C++中类可以看做是特殊结构体,所以类sizeof计算和结构体是一样。 三、下面拿具体程序来详细说明: 1 // sizeof(结构体).cpp : 定义控制台应用程序入口点。...TCHAR* argv[]) 20 { 21 cout<<sizeof(A)<<endl<<sizeof(B); 22 return 0; 23 } 上述程序输出结果是8和16....1(char)+3(填充)+4(int)=8,同时满足了准则3,不用再填充了,所以sizeof(A)=8。  ...对于结构体B,其中包括了一个复合类型,查看基本类型时候,要将其中结构体A拆分成char和int两种类型来看,所以结构体B中基本数据类型是char,char,int,char,最宽数据类型是int

    1K90

    C++ sizeof 介绍

    sizeof 类或者结构体sizeof 结构体以及类实例是同一结果,sizeof 类本质就是计算类实例大小。sizeof 一个空类(或者空结构体),结果是 1。...sizeof 只考虑类成员变量,不需要考虑成员函数,但是虚函数会增加虚表指针空间(虚表指针在对象内存首位置)。类静态成员变量不计入 sizeof 大小。...- 子类继承一个空类,sizeof 则大小为子类大小(子类也是空类,则 sizeof 为 1)当上述类虚继承一个空类(是不是空都无所谓),那么虚继承子类中需要添加一个虚基类指针(虚继承就是类似虚函数实现来实现基类共享...sizeof 数组sizeof 数组和指针是不一样sizeof 计算是数组大小。C 风格 char 数组,如果不指定数组长度,计算结果是字符个数 +1,包含 \0 结束位。...sizeof union联合体内存是重叠,则 sizeof 就是最大数据成员大小。

    19310

    sizeof和strlen区别

    简单介绍: . sizeof是一个操作符,是用来计算操作数所占内存大小,单位是字节 strlen是用来计算字符串长度一个函数,需要引用头文件string.h 区别在于sizeof是操作符...,而strlen是一个函数 . sizeof是不关心内存中所存放数是多少,只关心内存中数所占几个字节 而strlen则需要关系内存中多少,strlen函数用来计算字符串长度,其计算终点是...,使得其得出字符串长度值错无并且其值大小是一个随机值 小练习: 我在网上看见了一个关于sizeof和strlen函数有趣题目,有利于我们去理解题目之间区别,在这里我分享给大家: #include... int main() { short a = 10; int b = 2; int c = sizeof(a = b + 2); printf("%d...接下来我将做出解答: 解答: 最终答案就是 2 和 10 我相信大家应该和我一样,一开始对这个结果是十分疑惑,为何是2 和 10呢 因为a是short短整型,只有两个字节,而sizeof有一个特点,

    6700

    为什么结构体 sizeof 不等于每个成员 sizeof 之和

    问题 为什么结构体 sizeof 不等于每个成员 sizeof 之和? 回答 失传C结构体打包技艺 — 内存对齐 作者:Eric S....用行话来说,x86 和 ARM 基本 C 类型是“自对齐(self-aligned)”。关于指针,无论 32 位(4 字节)还是 64 位(8 字节)也都是自对齐。...也就是说,在 32 位系统,一个 4 字节指针之后紧跟着 1 字节 char,其后又紧跟着 4 字节 int。在 64 位系统中,唯一区别在于指针将占用 8 字节。...它跨步地址是 (&p)[2]。于是,在 quad 数组中,每个成员都有 7 字节尾填充,因为下个结构体首个成员需要在8字节边界对齐。...为了使结构体长度是其最宽成员长度 sizeof(short) 整数倍,接下来进行了填充。

    1.1K20

    C# int int16 Int32 Int64介绍

    C# int int16 Int32 Int64介绍 今天看到别人代码中用到Int32,UInt32相关,想到自己平时用都是int类型整数,就心生好奇翻了一下资料: ---- Int32 值类型表示值介于...Int16 值类型表示值介于 -32768 到 +32767 之间有符号整数。...类型 范围 大小 .NETFramework 类型 short [-2^15 , 2^15 -1] 有符号16位数 System.Int16 int 关键字表示一种整型,该类型根据下表显示大小和范围存储值...类型 范围 大小 .NETFramework 类型 int [-2^31 , 2^31 -1] 有符号32位数 System.Int32 long 关键字表示一种整型,该类型根据下表显示大小和范围存储值...类型是unsigned int派生出来 int是带符号,表示范围是:-21474 83647 到 21474 83648 uint是不带符号整形,表示范围是0到42949 67295(2^32-1)

    2.9K30
    领券