默认情况下,在我定义的函数中声明的局部变量(不是静态的)存储值 0,而没有初始化为 0。如何?[复制]

A local variable( that is not static) declared within a function defined by me stores value 0 by default, without having been initialised to 0. How? [duplicate]

提问人:Rimmy 提问时间:8/17/2023 最后编辑:NoDataFoundRimmy 更新时间:8/17/2023 访问量:42

问:

我创建了以下名为 THE 的函数,用于检查数字是否为质数并相应地返回布尔值。prime()

我在函数中声明了一个变量(但没有初始化它)来跟踪 no。数的除数。正在检查中。countprime()

默认情况下,它存储的值不是垃圾值,而是 0,这是怎么回事?

我什至添加了一行,在其声明后打印值以确认我的观察结果。count

请帮忙。

下面是代码片段:

bool prime(int n)
{
    int count;   //non-static variable count declared, but not initialsed to 0
    printf(" value of count is %i \n", count);  //this printed 0
    bool a;
    for(int x=2; x<=n; x++)
    {
        if (n%x==0)
        count ++;
    }
    if (count == 1)
        a= true;
    else
        a= false; 
    return a;
}
c 变量 static local default

评论

7赞 user3386109 8/17/2023
0 垃圾值。
0赞 ikegami 8/17/2023
它可能有任何价值,在写信之前阅读它们是未定义的行为。
0赞 BoP 8/17/2023
@Rimmy - 另一个提示。 本身就是一个布尔值,因此您可以执行操作,而不必创建特殊变量即可返回。count == 1return count == 1;
0赞 Rimmy 8/17/2023
@user3386109怎么样,那么每次我编译和运行时,它都会打印相同的垃圾值(0)。
1赞 ikegami 8/17/2023
试图解释未定义的行为是没有意义的,因为任何事情都可能发生。环境、输入或代码的任何微小变化都可能改变这种行为。

答: 暂无答案