gpt4 book ai didi

c++ - 为什么这段代码编译时没有警告?

转载 作者:太空狗 更新时间:2023-10-29 23:26:33 26 4
gpt4 key购买 nike

我不知道为什么这段代码符合:

int array[100];
array[-50] = 100; // Crash!!

...编译器仍然可以正确编译,没有编译错误和警告。

那么为什么它可以编译呢?

最佳答案

array[-50] = 100;

这里的实际意思是:

*(array - 50) = 100;

考虑这段代码:

int array[100];
int *b = &(a[50]);
b[-20] = 5;

此代码有效且不会崩溃。编译器无法知道代码是否会崩溃以及程序员想对数组做什么。所以它不会提示。

最后,请注意,您不应该在查找代码中的错误时依赖编译器警告。编译器不会发现你的大部分错误,他们几乎不会尝试为你提供一些提示来简化错误修复过程(有时他们甚至可能会弄错并指出有效代码有错误)。此外,该标准实际上从未要求编译器发出警告,因此这些只是编译器实现者的善意行为。

关于c++ - 为什么这段代码编译时没有警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14833339/

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