局部变量与全局变量在声明时的注意事项
2015-02-22 17:51
253 查看
/* ============================================================================ Name : TestVariable.c Author : lf Version : Copyright : Your copyright notice Description : 局部变量与全局变量在声明时的注意事项 全局变量只能要常量赋值,但是局部变量可用常量和表达式以及函数赋值. 这是为什么呢? 程序在开始执行时需要用适当的值来初始化全局变量,所以初始值必须保存在 编译生成的可执行文件,所以初始值在编译的时候就需要计算出来. 所以如果这么初始化全局变量:double pi2=acos(-1.0);需要在程序运行时 调用acos函数才能计算出对应的结果. 在这里主要是要区分编译时和运行时的两个阶段. 为简化编译器C语言规定:全局变量只能用常量表达式来定义. 否则报错:initializer element is not a constant expression 如果定义全局的变量: int minute=480; int hour=minute/60; 也会报同样的错误. 这是因为虽然在编译时计算出hour的值是可能的, 但是minute/60不是常量表达式同样不满足语法规范. ============================================================================ */ #include <stdio.h> #include <stdlib.h> #include <math.h> double pi1=3.14159; //错误的,提示如下: //initializer element is not a constant expression //double pi2=acos(-1.0); //int hour=minute/60是错误的,提示如下: //initializer element is not a constant expression //int minute=480; //int hour=minute/60; int main(void) { printf("pi1=%f\n",pi1); //printf("pi2=%f\n",pi2); double pi3=acos(-1.0); printf("pi3=%f\n",pi3); //printf("minute=%d\n",minute); //printf("hour=%d\n",hour); return EXIT_SUCCESS; }
相关文章推荐
- 局部变量与全局变量在声明时的注意事项
- 全局变量的设置及注意事项
- JS的作用域和声明提前,js中局部变量泄露为全局变量
- 全局变量初始化顺序及注意事项
- golang 简短变量声明注意事项
- c++全局变量使用中的一些注意事项
- JavaScript全局变量和局部变量的使用注意点
- js 全局变量 局部变量 隐式声明 显式声明,作用域
- C++学习 【4.5】 利用函数实现指定的功能---局部变量、全局变量、变量的存储类别、声明和定义
- 使用final声明变量的注意事项
- python全局变量使用注意事项_
- 5.1 Python 函数-默认参数,*args,**kwargs的使用;作用域-局部空间使用全局变量需要注意的事项等
- JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储。浮点型数据使用注意事项。全局变量特殊之处
- python 在函数中使用全局变量的注意事项
- python 在函数中使用全局变量的注意事项
- 变量.注意内部链接全局变量(也声明使用静态关键字)
- es6中的let声明变量与es5中的var声明变量的区别,局部变量与全局变量
- 【C++注意事项】2 变量声明和定义
- C编程中使用全局变量应注意的事项
- Js中的全局变量范围注意事项