我得到的输出为-28762.为什么它不是0(零),这应该是整数的默认值?TurboC中的默认值
#include<stdio.h>
#include<conio.h>
void main(){
int a;
clrscr();
printf("%d",a);
getch();
}
我得到的输出为-28762.为什么它不是0(零),这应该是整数的默认值?TurboC中的默认值
#include<stdio.h>
#include<conio.h>
void main(){
int a;
clrscr();
printf("%d",a);
getch();
}
虽然您尚未初始化变量,但该变量的确引用了内存中的位置。
这个位置的时候转换为整数会产生什么东西,你的情况是-28762
请注意,当你声明的任何简单数据类型,例如整数,浮点等出现这种情况的价值。
对于像用户定义的类型和结构这样的复杂类型,这不会发生。
整数变量不是默认为零,除非它们是文件范围或静态。 参见参考链路https://msdn.microsoft.com/en-us/library/y2xtdbay.aspx
如果z的声明是为一个未初始化的静态变量或是在文件范围,它将收到的0的初始值,并且该值将是不可修改的。
是-28762 ..在内存中的位置.. ????? – Nitesh
不,但是当你声明int时,它被分配了一个2字节的内存位置。可能有任何东西存储在该位置 – DhruvJoshi
何时...整数的默认值即'0'被分配给'a'.. ???????? – Nitesh
未定义的行为是未定义的行为。你需要初始化'a'来获得一些价值。 –
请勿使用TurboC。它正在实现C(或C++,带有TurboC++)的过时变体。使用最新的标准符合编译器(例如[GCC](http://gcc.gnu.org/)或[Clang](http://clang.llvm.org/)...)并启用所有警告和调试信息(例如用'gcc -Wall -Wextra -g'编译,它会警告你)。注意你的程序是错误的(因为'main'不应该被声明为'void'函数)。 –