gpt4 book ai didi

C: 数组下标低于数组边界

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

void page_kernel_only(int16_t page){

if(mode != KERNEL)
{
return;
}
page = page << 5;
page = page >> 5;
int16_t help = 8192;
help = help & page_table[page];

if(help == 0)
{
page_table[page] += 8192;
}

我收到“数组下标低于数组边界”警告,我不知道为什么,因为代码的前一部分没有给我这样的警告

void open_page(int16_t page){
if(mode != KERNEL)
{
return;
}
page = page << 5;
page = page >> 5;
int16_t help = 16384;
help = help & page_table[page];
if(help == 1)
{
return;
}
page_table[help] += 16384;

最佳答案

您将 page 定义为 16 位有符号整数。因此,如果该值大于 1024,当您向左移动 5 然后向右移动 5 时,您可能会遇到该值变为负值的风险,这会产生警告。

编辑:

如果要保证page的前5位为0,需要这样做:

page = page & 0x03FF;

编辑2:

page 应该定义为 uint16_t 而不是 int16_t。那应该处理警告。

关于C: 数组下标低于数组边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31392201/

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