gpt4 book ai didi

c - sizeof 在这种情况下如何工作?

转载 作者:行者123 更新时间:2023-12-04 04:29:40 24 4
gpt4 key购买 nike

看下面的代码:

#include <stdio.h>

int main(void)
{
int i = 1;
printf("%lu\n", sizeof(int[++i]));
printf("%d", i);
}

我正在测试 sizeof运算符,因为评估了可变长度数组类型的操作数——如果有人也对此进行澄清,我会很高兴,但问题是不同的。

6.5.3.4/2

sizeof 运算符产生其操作数的大小(以字节为单位),它可以是表达式或类型的括号名称。大小由操作数的类型决定。结果是一个整数。 如果操作数的类型是变长数组类型,则对操作数求值;否则,不计算操作数并且结果是整数常量 .

上述代码在GCC上的输出如下:
8
2

有人可以解释一下这个8来自哪里吗?数组是否衰减为指针?
还请说明可变长度数组部分。

最佳答案

当时int[++i]被评估,i初始值为 1。所以 int[++i]计算结果为 int[2] ,即 int 的数组大小为 2。

假设 int在您的系统上为 4 个字节,该数组的大小为 8 个字节。

关于c - sizeof 在这种情况下如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61619324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com