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

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

上一篇:python 全局变量


下一篇:[Python学习] 简单网络爬虫抓取博客文章及思想介绍