C语言中变量未初始化的处理

实例测试1--DEV-C++环境 :

#include <stdio.h>
//全局整形变量 
int int_var1;
static int stc_int_var1;
short int sht_int_var1;
long int log_int_var1;
//全局指针变量
char *int_opt1;

int main()
{
	//局部整形变量 
	int int_var2;
	static int stc_int_var2;
	short int sht_int_var2;
	long int log_int_var2;
	//局部指针变量
	char *int_opt2;//局部指针变量不初始化打印不出来 
	printf("int_var1=%d,stc_int_var1=%d,sht_int_var1=%hd,log_int_var1=%ld,int_opt1=%s\n", int_var1, stc_int_var1, sht_int_var1, log_int_var1, int_opt1);//全局变量 
	printf("int_var2=%d,stc_int_var2=%d,sht_int_var2=%hd,log_int_var2=%ld,int_opt2=%s\n", int_var2, stc_int_var2, sht_int_var2, log_int_var2, int_opt2);//局部变量 
	return 0;	
} 

修改:将局部字符指针初始化 char *int_opt2 = NULL;

总结1:

        Dev-C++环境下,全局未初始化变量均设置为默认值(int类型默认值0;字符指针默认null)

        局部未初始化变量,整形设置默认值0;指针未初始化变量不打印不报错!

实例测试2--GCC环境

#include <stdio.h>
//全局整形变量 
int int_var1;
static int stc_int_var1;
short int sht_int_var1;
long int log_int_var1;
//全局指针变量
char *int_opt1;

int main()
{
	//局部整形变量 
	int int_var2;
	static int stc_int_var2;
	short int sht_int_var2;
	long int log_int_var2;
	//局部指针变量
	char *int_opt2;
	printf("int_var1=%d,stc_int_var1=%d,sht_int_var1=%hd,log_int_var1=%ld,int_opt1=%s\n", int_var1, stc_int_var1, sht_int_var1, log_int_var1, int_opt1);//全局变量 
	printf("int_var2=%d,stc_int_var2=%d,sht_int_var2=%hd,log_int_var2=%ld,int_opt2=%s\n", int_var2, stc_int_var2, sht_int_var2, log_int_var2, int_opt2);//局部变量 
	return 0;	
} 

修改:随机去掉两个局部变量

总结2:

        GCC环境下,全局未初始化变量设置默认值(int类型默认值0;字符指针默认null)

        局部未初始化变量有时设置随机值或者默认值

实例测试3--VS2013环境:

 总结3:

        VS2013环境,全局未初始化变量设置默认值(int类型默认0,指针默认null)

        局部未初始化变量只定义不使用(警告);定义+使用(报错)

总结:

        1. 局部变量未初始化,初值为随机值:C规范对该初值并没有做规定,具体实现由编译器决定。

        2.全局变量未初始化,默认设置为初值。

        3.局部未初始化变量,编译通过与否与具体编译环境相关。

结论:无论任何时候,变量初始化!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值