我不知道为什么会这样。有没有遇到过这个?我正在使用Netbeans 8.2,程序正在调试模式下运行。
#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;
}
正如你所看到的,Netbeans说一些索引包含看似是int值的东西,当我声明所有的值都是false时,突出显示的那个索引甚至是真的。
布尔值是一种算术类型,因此,当您在初始化器中未提供明确值时,应将其初始化为好像它们是静态的。
这在(例如)C11 6.7.9 Initialization
中详细(释义):
21 /如果括号括起的列表中的初始值设定项少于聚合的元素或成员,则聚合的其余部分应与具有静态存储持续时间的对象隐式初始化。
10 /如果没有显式初始化具有静态或线程存储持续时间的对象,并且它具有算术类型,则将其初始化为(正或无符号)零。
在正确检查方面,对代码进行临时更改,如下所示:
#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调试器错误或您使用错误:-)