gpt4 book ai didi

c++ - C++中数组索引的奇怪类型分配

转载 作者:太空宇宙 更新时间:2023-11-03 17:24:45 25 4
gpt4 key购买 nike

你好,我有一个示例程序

#include <iostream>

int main() {
int a = -5;
int arr[a];
std::cout << "Size of arr: " << sizeof(arr) << std::endl;
return 0;
}

我在这里得到 17179869164 的输出。

我的问题是数组大小值不应该接受负值!如果我尝试给出 [-5],它会抛出一个错误。但现在我如何获得 17179869164 的输出。

我也有我的假设,-5 被转换为无符号整数值 4294967291,总大小为 17179869164 = 4294967291 * 4(整数大小)。

所以我想知道为什么编译器将 signed int 类型转换为 unsigned int 而没有抛出编译时错误。我需要清楚地了解编译器如何执行那段代码?

最佳答案

这就是所谓的未定义行为。要捕获此类错误,您可以使用静态分析器的帮助。

其他人在这里问过类似的问题: Declaring an array of negative length

关于c++ - C++中数组索引的奇怪类型分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59676791/

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