sizeof相关内容
首先,我了解结构中的字节填充.但是我还有一个小测试在结构中包含一个双字段,我不知道如何解释: typedef struct {字符一个;双 b;}数据;类型定义结构{字符一个;国际b;}单身的;int main(){printf("%d\n",sizeof(double));printf("%d\n",sizeof(single));printf("%d\n",sizeof(data));}
..
我有以下类型的代码: typedef 结构体{u32 计数;u16 列表[];} message_t;...message_t* msg = (message_t*)buffer;味精->计数= 2;味精->列表[0] = 123;味精->列表[1] = 456;size_t total_size = sizeof(*msg) + sizeof(msg->list[0]) * msg->coun
..
我试图声明一个依赖于另一个结构的结构.我想使用 sizeof 来保证安全/迂腐. typedef struct _parent{浮动计算;字符文本[255];使用的整数;} parent_t ; 现在我想声明一个与 parent_t.text 大小相同的结构 child_t. 我该怎么做?(下面的伪代码.) typedef struct _child{字符标志;字符文本[sizeof(
..
我曾经认为每个字符都是一个字节(至少在 c/c++ 中是这样)所以字符串的大小应该等于 len(string) 字节.然而,一个简单的实验告诉我,在 python 中并非如此: 导入字符串,系统,随机# 抽象代码,去除不必要的部分def loadKeyLength(db,key,N):val = key[:5] + ''.join(random.choice(string.ascii_lette
..
遇到了一个非常微妙的问题.得到了一个用 MS VS 2013 c++ 编译器编译的类,对于 32 位平台有 4 个字节的大小.函数指针的大小为 4 个字节.但是当这个类用同一个编译器编译但包含在不同的项目中生成库时,也是针对 32 位平台的,那么这个类的 *m_Function 指针占用了 16 个字节!当然,当我从主项目实例化这个类时,它认为这个类占用了 4 个字节并分配了这个内存大小,而实际上
..
我对 sizeof($x) 与 $x 在循环中的速度感到困惑.这个站点:phpbench.com 声称没有 pre calc -count() 的 sizeof($x) 循环比使用 pre calc count() 慢 数千 个百分点.所以我做了如下测试,但我不确定这是否是测试它的正确方法.结果表明,每个函数的时间几乎相同.所以我不明白它与 phpbench 网站有什么不同. 总而言之,如果
..
我知道字符串的结尾由空字符表示,但我无法理解以下代码的输出. #include #include 整数主要(无效){char s[] = "你好\0你好";printf("%d %d", strlen(s), sizeof(s));} 输出:5 9 如果 strlen() 在 o 的末尾检测到字符串的结尾,那么为什么 sizeof() 不做同样的事情呢?即使它不做同样的事情,不是 '\0
..
sizeof(Type) 总是可以被 alignof(Type) 整除 这样这句话就永远是真的?sizeof(Type) % alignof(Type) == 0 解决方案 是的,sizeof(Type) % alignof(Type) == 0 适用于所有类类型.强> 标准草案说: [dcl.array] ... 数组类型的对象包含一个连续分配的非空 T 类型子对象集.
..
请考虑以下结构: Foo类{诠释}; 在g ++中进行测试,我得到了 sizeof(Foo)== 4 ,但这是标准所保证的吗?允许编译器注意到 a 是未使用的私有字段,并将其从类的内存表示形式中删除(导致sizeof较小)吗? 我不希望任何编译器实际进行这种优化,但是这个问题在语言律师讨论中突然出现,所以我很好奇. 解决方案 C ++标准对内存布局没有太多定义.这种情况的基本
..
我试图确切地算出可以用作浮点数和 double 的数字.但是除了整数值,它不存储我期望的方式. double 应该包含8个字节的信息,足以容纳变量a,但它并不正确.它显示 1234567890123456768 ,其中后两位数字不同.当我将 214783648 或最后一位中的任何数字存储在浮点变量 b 中时,它会显示相同的值 214783648 .这应该是极限.那是怎么回事? double a
..
我注意到在Windows和Linux x86上,float是4字节类型,double是8,但是long double在x86和x86_64上分别是12和16.C99应该打破具有特定整数大小的障碍. 最初的技术限制似乎是由于x86处理器不能处理80位以上的浮点运算(加上2个字节以进行四舍五入),但是为什么与int类型相比标准不一致?为什么他们至少不进行80位标准化? 解决方案 C语言没
..
该程序: struct alignas(4)foo {};int main(){返回sizeof(foo);} 返回4,GCC 10.1和clang 10.1,icc 19.0.1. 这让我感到疑惑-是否必须强制 alignas()这样影响 sizeof()?即将尺寸增加到超出结构最初尺寸的尺寸?或者-这种更改只是实现的特权吗? 解决方案 alignas()是否必须以这种
..
从下面的代码中 sizeof(Base)== 24 和 sizeof(Derived)== 24 . 为什么它们的大小相等? 在 Base 类中,我们有3个成员,在 Derived 类中,我们有另一个成员. class基础{私人的:双d;受保护的:长l;上市:我};派生类:公共基础{私人的:浮动f;}; 解决方案 碰巧您的类 Base 具有8字节对齐要求,但其最后一个成员的大
..
我有这样的代码: A类{上市:无符号长a;静态const unsigned long b = sizeof(a);//VC ++中的“错误C2327:'A :: a':不是类型名称,静态或枚举器"}; 我在VC ++中出现编译器错误,而在IAR中没有错误.哪种编译器是正确的,C ++标准对此有何评论? 解决方案 您的MSVS版本很旧,因此基于此版本,并假设它们默认为C ++ 03,
..
使用stdint.h库中的uint32_t类型时遇到问题.如果我运行以下代码(在Ubuntu linux 11.10 x86_64,g ++版本4.6.1上): #include"stdint.h"#include使用std :: cout;typedef struct {//api标识符uint8_t api_id;uint8_t frame_id;uint32_t d
..
sizeof(size_t)是否可以小于 sizeof(int)? C和/或C ++标准是否保证使用 unsigned int 进行数组索引总是安全的? 解决方案 是的, sizeof(size_t)原则上可以小于 sizeof(int).我不知道有什么实现是正确的,而且很可能没有实现.我可以想象使用64位 int 和32位 size_t 的实现. 但是使用 unsigned
..
我偶然发现了这段代码. int x(int a){std :: cout
..
C中的 sizeof()运算符在编译时给出其操作数的大小.它不评估其操作数.例如 int ar1 [10];sizeof(ar1)//输出40 = 10 * 4sizeof(ar1 [-1])//输出4int ar2 [sizeof(ar1)];//生成40个整数的数组. 谈到C ++模板类时,我发现了一些奇怪的结果. template结构S {a};size
..
有很多类似的查询,但就我而言,我不明白什么是行不通的: int mysize = 0;mysize = sizeof(samplestring)/sizeof(* samplestring);std :: cout
..
这两个代码是否相同 char ch ='a';printf(“%d",ch); 会打印垃圾值吗? 对此我感到困惑 printf(“%d",'\ 0'); 这将打印0还是垃圾值?因为当我这样做 printf(“%d",sizeof('\ n')); 它打印4.为什么 sizeof('\ n') 4个字节?在C ++中,相同的东西打印1个字节.为什么会这样? 所以这
..