c - 非静态变量初始化

标签 c

我正在阅读一本关于 C 语言编程常见问题解答的书。 这是本书的段落

Automatic variables are variables defined inside a function or block of code without the static keyword. These variables have undefined values if you don’t explicitly initialize them. If you don’t initialize an automatic variable, you must make sure you assign to it before using the value.

这是我的代码:

#include <stdio.h>
int main (int argc, const char * argv[])
{    
    {
        int x;
        printf("%d", x);
    }
}

printf的结果是0,为什么要初始化变量?

最佳答案

对于静态和全局变量,它是 0;默认情况下不初始化自动变量。

在c语言中,非静态局部变量没有默认值。变量在成为变量之前保存内存中的所有内容。在 c 语言中使用非静态局部变量之前(或至少在将其与其他变量进行比较之前),最好始终对其进行初始化。此外,最好假设没有默认值,因为这因语言和硬件而异。

阅读更多:http://wiki.answers.com/Q/What_is_the_default_value_of_integer_in_c#ixzz1iaij7hRK

关于c - 非静态变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8743445/

相关文章:

c - listen() 积压上限

c - 如何理解 xv6 Bootstrap 代码中的以下代码?

c - 如何找到二叉搜索树第 x 层的节点数(有限制)

计数到数组并写入文本文件 xcode

c - C 中的标准库和彩色输出

c - 找出第二大数

c - 数学矩阵程序

c - 如何在C编程中制作小时、分钟偏移标志

C 程序查找所有素因数。示例 : 24 will have 2 2 2 3 as answer

c - 为什么使用 "%s"格式说明符 printf 一个字符数组会在数组中的最后一个字符之后输出额外的无意义值?