评估 ULONG_MAX 元素的长数组的大小

问题描述 投票:0回答:1

考虑以下代码:

#include <stdio.h>
#include <limits.h>
#include <stddef.h>

int main(){
    size_t cnt = ULONG_MAX;
    size_t sz = sizeof(long[cnt]);
    printf("%zu\n", sz);
}

6.5.3.4/p2

如果操作数的类型是变长数组类型,则 操作数被评估;否则,不计算操作数并且 结果是一个整数常量。

问题是这么大的

sizeof
评估是否定义良好?由于
size_t
unsigned
,因此标准保证
unsigned
整数溢出具有明确定义的行为(与可能引发实现定义信号的
signed
不同)。

c sizeof
1个回答
1
投票

是的,定义明确。它在运行时对可变长度数组执行

sizeof(element)*number_of_elements
计算。结果再大也没关系。

© www.soinside.com 2019 - 2024. All rights reserved.