gpt4 book ai didi

c - 在 C 中使用#include

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

我不知道为什么会这样。有没有人遇到过这个?我使用的是 Netbeans 8.2,程序在 Debug模式下运行。

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define N 100

int main() {
//all lockers are closed
bool lockers[N + 1] = {false};

return 0;
}

Variables window in debug mode

如您所见,Netbeans 表示某些索引保存的似乎是 int 值,而当我将所有值声明为 false 时,突出显示的那个甚至是 true。

最佳答案

boolean 值是一种算术类型,因此,当您没有在初始化程序中提供明确的值时,它们应该像静态一样被初始化。

这在(例如)C11 6.7.9 Initialization 中有详细说明(释义):

21/ If there are fewer initializers in a brace-enclosed list than there are elements or members of an aggregate, the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration.

10/ If an object that has static or thread storage duration is not initialized explicitly and if it has arithmetic type, it is initialized to (positive or unsigned) zero.

正确检查而言,对您的代码进行如下临时更改:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define N 100

int main() {
//all lockers are closed
bool lockers[N + 1]= {false};

for (int i = 0; i <= N; ++i)
if (lockers[i])
printf("%d is the wrong value\n", i);

return 0;
}

根本不应该得到任何输出,如果是这种情况,要么是 NetBeans 调试器错误,要么是您使用错误:-)

关于c - 在 C 中使用#include <stdbool.h>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52808967/

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