您的位置:首页 > 运维架构 > Linux

Linux c编程一站式学习笔记(03), 变量注意点

2014-01-02 05:31 267 查看
局部变量可以用类型相符的任意表达式来初始话,而全局变量只能用常量表达式(ConstantExpression)初始化。
例如:全局变量pi这样初始化是合法的:
double pi = 3.14 +0.0016;
但是这样初始化是不合法的:
double pi =acos(-1.0);
局部变量这样初始话却是可以的。程序开始运行是要用适当的值来初始化全局变量,所以初始值必须保存在编译生成的可执行文件中,因此初始值在编译时就要计算出来,然而上面第二种初始的值必须在程序运行是调用acos函数才能够得到,所以不能够用来初始化全局变量。

为了简化编译器的实现,C语言从语法上规定全局变量只能用常量表达式来初始化,因此下面这种全局变量初始化是不合法的:
int minute = 360;
int hour = minute /60;
虽然在编译是计算出hour的初始值是可能的,但是minute/ 60不是常量表达式,不符合语法规定,所以编译器不必想办法去算这个初始值。

如果全局变量在定义是不初始化则初始值为0,如果局部变量在定义是不初始化则初始值是不确定的,所以局部变量在使用之前一定要先赋值,如果基于一个不确定的值做后续的计算肯定会引入bug。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: