我有类似的东西,
#include <stdio.h>
#include <stdbool.h>
int main()
{
int t,answer;
bool count;
long long int L;
scanf("%d",&t);
while(t>0)
{
answer = 0;
scanf(" %lld",&L);
bool count[L];
// .....restofthecode. NDA Constraint.
arr[x]
的所有元素的默认值是什么?
是false
总是吗?还是true
?或任何随机值?
答案 0 :(得分:4)
C中没有名为boolean
的类型,但_Bool
和stdbool.h
中的bool
宏扩展为_Bool
。
#include <stdbool.h>
#define X 42
bool arr[X];
arr
元素的初始值为false
(即0
),如果在文件范围内声明,则在块范围内声明时不确定。
在块范围内,使用初始值设定项来避免元素的不确定值:
void foo(void)
{
bool arr[X] = {false}; // initialize all elements to `false`
}
编辑:
现在问题略有不同:
long long int x;
scanf("%lld",&x);
bool arr[x];
这意味着arr
是一个可变长度数组。 VLA只能具有块作用域,因此与块作用域中的任何对象一样,这意味着数组元素具有不确定的值。您无法在申报时初始化VLA。您可以使用=
运算符或使用memset
函数为数组元素指定值。
答案 1 :(得分:1)
根据您的代码,在本地范围内
boolean arr[x];
本身无效。 x
未经初始化使用。
仅供参考,在全局[文件]范围内,所有变量都初始化为0
。在本地范围内,它们只包含垃圾,除非明确初始化。
修改强>
[编辑后] arr
数组中的所有变量都将具有垃圾值。它位于本地范围[auto]。