我不知道为什么会发生这种事。有人遇到过这种情况吗?我正在使用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时,突出显示的值甚至是正确的。
发布于 2018-10-15 02:45:35
布尔值是一种算术类型,因此,当您没有在初始值中提供明确的值时,应该将其初始化为静态值。
这在(例如) 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调试器是错误的,要么是您使用错了:-)
https://stackoverflow.com/questions/52808967
复制相似问题