sizeof相关内容

包含双字段的结构的大小

首先,我了解结构中的字节填充.但是我还有一个小测试在结构中包含一个双字段,我不知道如何解释: typedef struct {字符一个;双 b;}数据;类型定义结构{字符一个;国际b;}单身的;int main(){printf("%d\n",sizeof(double));printf("%d\n",sizeof(single));printf("%d\n",sizeof(data));} ..
发布时间:2021-08-31 19:06:28 其他开发

灵活的数组成员会增加结构的大小吗?

我有以下类型的代码: 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 ..
发布时间:2021-08-31 19:05:52 其他开发

C 中单个结构成员的大小

我试图声明一个依赖于另一个结构的结构.我想使用 sizeof 来保证安全/迂腐. typedef struct _parent{浮动计算;字符文本[255];使用的整数;} parent_t ; 现在我想声明一个与 parent_t.text 大小相同的结构 child_t. 我该怎么做?(下面的伪代码.) typedef struct _child{字符标志;字符文本[sizeof( ..
发布时间:2021-08-31 19:05:31 其他开发

sizeof(string) 不等于字符串长度

我曾经认为每个字符都是一个字节(至少在 c/c++ 中是这样)所以字符串的大小应该等于 len(string) 字节.然而,一个简单的实验告诉我,在 python 中并非如此: 导入字符串,系统,随机# 抽象代码,去除不必要的部分def loadKeyLength(db,key,N):val = key[:5] + ''.join(random.choice(string.ascii_lette ..
发布时间:2021-06-26 20:23:38 Python

指向成员函数的指针的大小像疯了一样变化

遇到了一个非常微妙的问题.得到了一个用 MS VS 2013 c++ 编译器编译的类,对于 32 位平台有 4 个字节的大小.函数指针的大小为 4 个字节.但是当这个类用同一个编译器编译但包含在不同的项目中生成库时,也是针对 32 位平台的,那么这个类的 *m_Function 指针占用了 16 个字节!当然,当我从主项目实例化这个类时,它认为这个类占用了 4 个字节并分配了这个内存大小,而实际上 ..
发布时间:2021-06-18 19:55:34 C/C++开发

循环 sizeof($x) 与循环 ($x) 的真实速度/基准?

我对 sizeof($x) 与 $x 在循环中的速度感到困惑.这个站点:phpbench.com 声称没有 pre calc -count() 的 sizeof($x) 循环比使用 pre calc count() 慢 数千 个百分点.所以我做了如下测试,但我不确定这是否是测试它的正确方法.结果表明,每个函数的时间几乎相同.所以我不明白它与 phpbench 网站有什么不同. 总而言之,如果 ..
发布时间:2021-06-15 19:58:34 PHP

如果字符串中间出现空字符怎么办?

我知道字符串的结尾由空字符表示,但我无法理解以下代码的输出. #include #include 整数主要(无效){char s[] = "你好\0你好";printf("%d %d", strlen(s), sizeof(s));} 输出:5 9 如果 strlen() 在 o 的末尾检测到字符串的结尾,那么为什么 sizeof() 不做同样的事情呢?即使它不做同样的事情,不是 '\0 ..
发布时间:2021-06-10 18:38:46 其他开发

sizeof 总是 alignof 的倍数吗?

sizeof(Type) 总是可以被 alignof(Type) 整除 这样这句话就永远是真的?sizeof(Type) % alignof(Type) == 0 解决方案 是的,sizeof(Type) % alignof(Type) == 0 适用于所有类类型.强> 标准草案说: [dcl.array] ... 数组类型的对象包含一个连续分配的非空 T 类型子对象集. ..
发布时间:2021-06-02 19:42:01 C/C++开发

C ++标准是否保证未使用的私有字段会影响sizeof?

请考虑以下结构: Foo类{诠释}; 在g ++中进行测试,我得到了 sizeof(Foo)== 4 ,但这是标准所保证的吗?允许编译器注意到 a 是未使用的私有字段,并将其从类的内存表示形式中删除(导致sizeof较小)吗? 我不希望任何编译器实际进行这种优化,但是这个问题在语言律师讨论中突然出现,所以我很好奇. 解决方案 C ++标准对内存布局没有太多定义.这种情况的基本 ..
发布时间:2021-05-28 20:16:32 C/C++开发

您可以在double中存储多少个数字并在c中进行浮点运算?

我试图确切地算出可以用作浮点数和 double 的数字.但是除了整数值,它不存储我期望的方式. double 应该包含8个字节的信息,足以容纳变量a,但它并不正确.它显示 1234567890123456768 ,其中后两位数字不同.当我将 214783648 或最后一位中的任何数字存储在浮点变量 b 中时,它会显示相同的值 214783648 .这应该是极限.那是怎么回事? double a ..
发布时间:2021-05-08 19:54:53 其他开发

为什么C99标准的作者不为浮点类型的大小指定标准?

我注意到在Windows和Linux x86上,float是4字节类型,double是8,但是long double在x86和x86_64上分别是12和16.C99应该打破具有特定整数大小的障碍. 最初的技术限制似乎是由于x86处理器不能处理80位以上的浮点运算(加上2个字节以进行四舍五入),但是为什么与int类型相比标准不一致?为什么他们至少不进行80位标准化? 解决方案 C语言没 ..
发布时间:2021-04-21 18:31:32 其他开发

alignas()对sizeof()的影响-强制性吗?

该程序: struct alignas(4)foo {};int main(){返回sizeof(foo);} 返回4,GCC 10.1和clang 10.1,icc 19.0.1. 这让我感到疑惑-是否必须强制 alignas()这样影响 sizeof()?即将尺寸增加到超出结构最初尺寸的尺寸?或者-这种更改只是实现的特权吗? 解决方案 alignas()是否必须以这种 ..
发布时间:2021-04-20 18:45:43 C/C++开发

为什么我添加了一个成员,但sizeof(BaseClass)== sizeof(DerivedClass)

从下面的代码中 sizeof(Base)== 24 和 sizeof(Derived)== 24 . 为什么它们的大小相等? 在 Base 类中,我们有3个成员,在 Derived 类中,我们有另一个成员. class基础{私人的:双d;受保护的:长l;上市:我};派生类:公共基础{私人的:浮动f;}; 解决方案 碰巧您的类 Base 具有8字节对齐要求,但其最后一个成员的大 ..
发布时间:2021-04-19 20:53:52 C/C++开发

静态const成员初始化中的sizeof

我有这样的代码: A类{上市:无符号长a;静态const unsigned long b = sizeof(a);//VC ++中的“错误C2327:'A :: a':不是类型名称,静态或枚举器"}; 我在VC ++中出现编译器错误,而在IAR中没有错误.哪种编译器是正确的,C ++标准对此有何评论? 解决方案 您的MSVS版本很旧,因此基于此版本,并假设它们默认为C ++ 03, ..

sizeof(size_t)可以小于sizeof(int)吗?

sizeof(size_t)是否可以小于 sizeof(int)? C和/或C ++标准是否保证使用 unsigned int 进行数组索引总是安全的? 解决方案 是的, sizeof(size_t)原则上可以小于 sizeof(int).我不知道有什么实现是正确的,而且很可能没有实现.我可以想象使用64位 int 和32位 size_t 的实现. 但是使用 unsigned ..
发布时间:2021-04-19 20:03:29 C/C++开发

C ++中的sizeof()运算符是做什么的

C中的 sizeof()运算符在编译时给出其操作数的大小.它不评估其操作数.例如 int ar1 [10];sizeof(ar1)//输出40 = 10 * 4sizeof(ar1 [-1])//输出4int ar2 [sizeof(ar1)];//生成40个整数的数组. 谈到C ++模板类时,我发现了一些奇怪的结果. template结构S {a};size ..
发布时间:2021-04-19 19:33:09 C/C++开发

用printf打印一个字符

这两个代码是否相同 char ch ='a';printf(“%d",ch); 会打印垃圾值吗? 对此我感到困惑 printf(“%d",'\ 0'); 这将打印0还是垃圾值?因为当我这样做 printf(“%d",sizeof('\ n')); 它打印4.为什么 sizeof('\ n') 4个字节?在C ++中,相同的东西打印1个字节.为什么会这样? 所以这 ..
发布时间:2021-04-19 19:18:48 C/C++开发