2017-06-17 32 views
-5

我得到的输出为-28762.为什么它不是0(零),这应该是整数的默认值?TurboC中的默认值

#include<stdio.h> 
#include<conio.h> 

void main(){ 
    int a; 
    clrscr(); 
    printf("%d",a); 
    getch(); 
} 
+3

未定义的行为是未定义的行为。你需要初始化'a'来获得一些价值。 –

+4

请勿使用TurboC。它正在实现C(或C++,带有TurboC++)的过时变体。使用最新的标准符合编译器(例如[GCC](http://gcc.gnu.org/)或[Clang](http://clang.llvm.org/)...)并启用所有警告和调试信息(例如用'gcc -Wall -Wextra -g'编译,它会警告你)。注意你的程序是错误的(因为'main'不应该被声明为'void'函数)。 –

回答

-2

虽然您尚未初始化变量,但该变量的确引用了内存中的位置。

这个位置的时候转换为整数会产生什么东西,你的情况是-28762

请注意,当你声明的任何简单数据类型,例如整数,浮点等出现这种情况的价值。

对于像用户定义的类型和结构这样的复杂类型,这不会发生。

整数变量不是默认为零,除非它们是文件范围或静态。 参见参考链路https://msdn.microsoft.com/en-us/library/y2xtdbay.aspx

如果z的声明是为一个未初始化的静态变量或是在文件范围,它将收到的0的初始值,并且该值将是不可修改的。

+0

是-28762 ..在内存中的位置.. ????? – Nitesh

+0

不,但是当你声明int时,它被分配了一个2字节的内存位置。可能有任何东西存储在该位置 – DhruvJoshi

+0

何时...整数的默认值即'0'被分配给'a'.. ???????? – Nitesh