局部变量与全局变量在声明时的注意事项

/*
 ============================================================================
 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;
}

时间: 2024-10-11 21:36:53

局部变量与全局变量在声明时的注意事项的相关文章

JAVA基础之局部变量与全局变量以及成员变量的区别

局部变量 定义:在方法内定义的变量称为"局部变量"或"临时变量",方法结束后局部变量占用的内存将被释放. 全局变量 定义:全局变量,又称"外部变量",它不是属于哪个方法,作用域从定义的地址开始到源文件结束. 注意事项: 当局部变量与全局变量重名时,起作用的是局部变量. 成员变量 定义:在类体的变量部分中定义的变量,也称为字段. 区别: java中没有全局变量的定义,这是C中的例: class Demo{ int x;// 非静态成员变量,又称为属

[Sass]局部变量和全局变量

[Sass]局部变量和全局变量 Sass 中变量的作用域在过去几年已经发生了一些改变.直到最近,规则集和其他范围内声明变量的作用域才默认为本地.如果已经存在同名的全局变量,从 3.4 版本开始,Sass 已经可以正确处理作用域的概念,并通过创建一个新的局部变量来代替. 全局变量与局部变量 先来看一下代码例子: //SCSS $color: orange !default;//定义全局变量(在选择器.函数.混合宏...的外面定义的变量为全局变量) .block { color: $color;//

C++局部变量、全局变量、静态变量(堆、栈、静态存储区)

1 static关键字 1.1 隐藏 eg: //a.c文件中 char a = 'A'; void msg() { printf("Hello\n"); } //main.c文件中 extern char a; printf("%c",a); 输出结果:A Hello 所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问.a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的. 如果加了stat

javascript中局部变量和全局变量的区别详解

javascript有两种变量:局部变量和全局变量.当然,我们这篇文章是帮助大家真正的区别这两种变量. 首先,局部变量是指只能在本变量声明的函数内部调用.全局变量时整个代码中都可以调用的变量.当然,单单从字面上理解肯定是不清楚的,下面我详细的介绍下: 大家都知道,变量是需要用var关键字声明的.但是javascript中也可以隐式的使用变量,就是不用声明,直接使用.而且,千万注意,javascript把隐式声明的变量总是当成全局变量来使用的. 例如: 代码如下: function myName(

使用Lua 局部变量来优化性能,同时比较局部变量和全局变量

在竞争激烈的游戏行业中,尤其页游,面对策划复杂和频繁的需求,使用脚本可以降低难度和成本.在使用Lua的过程中,会经常访问全局变量来作为配置文件. 在访问全局变量时,可以通过局部变量引用全局变量来优化.当然,这样的优化毫无意义. Locals Vs Globals  from  http://lua-users.org/wiki/LocalsVsGlobals Comparison between local and global variables: Implementation: Locals

使用Lua 局部变量来优化性能,同一时候比較局部变量和全局变量

在竞争激烈的游戏行业中,尤其页游,面对策划复杂和频繁的需求,使用脚本能够减少难度和成本.在使用Lua的过程中,会常常訪问全局变量来作为配置文件. 在訪问全局变量时,能够通过局部变量引用全局变量来优化.当然,这种优化毫无意义. Locals Vs Globals  from  http://lua-users.org/wiki/LocalsVsGlobals Comparison between local and global variables: Implementation: Locals

python入门基础教程07 python的局部变量和全局变量

局部变量 要谈局部变量和全局变量的技术前提是对函数有一定的理解,我们先在这里简单说明一下Python的函数,Python有自带的函数也可以使用第三方工具包了外部引用函数,有的时候用户自己可以自主开发一些特定功能的函数我们称之为自定义函数.用户怎么才能自己定义函数呢?Python 规定的自定义函数语法结构如下: def function_name(parameters): (TAB)statement1 (TAB)statement2 (TAB)statement3 (TAB)etc. 第1行是定

C语言局部变量和全局变量的区别。——Arvin

局变量是使用相同的内存块在整个类中存储一个值. 全局变量的存在主要有以下一些原因: 1,使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不成为什么问题,除非使用的是巨大对象的全局变量,能避免就一定要避免. 2,使用全局变量程序运行时速度更快一些(因为内存不需要再分配),同样现在也快不了多少. 3,对于局部变量的名字空间污染,这个在不使用太多变量时是可以避免的. 总之,全局变量可以使用,但是全局变量使用时应注意的是尽可能使期名字易于理解,而且不能太短,避免名字空间的

在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别,== 和 ===的区别

1. 在Javascript中 声明时用"var"与不用"var"的区别 Javascript声明变量时 var a = 111; 和 a = 111; 两种方式一样吗? var a = 11;function test4(){    var a = 22; } test4(); console.log(a); 结果是什么呢? 11 这个好理解, 函数内的var a声明是内部变量,这时结果是第一个a的值. 变动一下如下: var abc = 11;function