【发布时间】:2014-06-11 07:09:51
【问题描述】:
我需要创建一个由参数传递的长度未知的布尔数组。所以,我有以下代码:
void foo (int size) {
bool *boolArray = new bool[size];
for (int i = 0; i < size; i++) {
if (!boolArray[i]) {
cout << boolArray[i];
}
}
}
我认为布尔数组正在使用错误值进行初始化...
然后,如果我在 Eclipse(在 Ubuntu 上)中运行该代码,它对我来说工作正常,该函数会打印所有值,因为 !boolArray[i] 返回 true(但值不是false 值,它们是垃圾值)。如果我在 Visual Studio 中运行它,这些值也是垃圾值,但该函数不会打印任何值(因为 !boolArray[i] 返回 false)。为什么数组值默认不是假值?!?为什么 !boolArray[i] 在 Visual Studio 中返回 false 而在 Eclipse 中返回 true?!?
我读到了这个问题:Set default value of dynamic array,所以如果我像下面这样更改代码,它对我来说也可以正常工作(在 Eclipse 和 Visual Studio 中)!但我不知道为什么。
void foo (int size) {
bool *boolArray = new bool[size]();
for (int i = 0; i < size; i++) {
if (!boolArray[i]) {
cout << boolArray[i];
}
}
}
对不起,我的英语不好!
提前致谢!
【问题讨论】:
-
@ShafikYaghmour 实际上,我有两个问题...该帖子回答了一个问题,但没有说明为什么 !boolArray[i] 在 Visual Studio 中返回 false 而在 Eclipse 中返回 true...跨度>
-
使用未初始化的变量是未定义的行为,所以它并没有真正这么说,但我不认为这方面使它不是一个重复。
-
@ShafikYaghmour 谢谢!!!
标签: c++ arrays dynamic boolean