在程序运行过程中,其值不能被改变的量。
#define PI 3.14 #注意行末没有分号
注:符号常量不占内存,只是一个临时符号,代表一个值,在预编译后这个符号就不存在了,故不能对符号常量赋新值。
在程序运行过程中,其值发生改变的量。(变量必须先定义,后使用)
变量名:实际上是以一个名字代表的一个存储地址。
变量值:通过变量名找到相应的内存地址,从该存储但愿中读取数据。
C99允许使用常变量,方法是在定义变量时,前面加一个关键字const
const float pi =3.1415926 //定义常变量
只能由数字、字母和下划线三种字符组成,且第一个字符不能以数字开头。
类型:对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。不同的类型分配不同的长度和存储形式。
注:在存储单元中的存储(整数)方式,用补码进行表示,且存放整数的存储单元中,最左面一位用来表示符号的(0:表示数为正,1:表示数为负)。
#include <stdio.h> void main() { short int a,b; a=32767; b=a+1; printf("a=%d,a+1=%d\n",a,b); a=-32768; b=a-1; printf("\na=%d,a-1=%d\n",a,b); } //该程序发生的情况称为“溢出”,但运行时不报错。32767+1应该等于32768,但运行结果却是-32768。
测试不同整数类型所占的字节数的代码如下:
#include <stdio.h> void main() { printf("int:%d bytes\n",sizeof(int)); /*int在Tc2.0中字节数为2,在VC中为4*/ printf("short:%d bytes\n",sizeof(short)); /*short型的字节数为2*/ printf("long:%d bytes\n",sizeof(long)); /*long型的字节数为4*/ }
其中sizeof的作用是求对象在计算机内存中所占用的字节数。一般形式为:sizeof(object),object可以是变量、表达式或者数据类型名。
注:凡是以小数形式或指数形式出现的实数均为浮点型常量,在内存中都是以指数形式存储。
重点
注:不同类型数据间的混合运算除了用户强制转化,编译系统也会自动完成,用户不必过问。(自动完成数据转换的称为隐式转换,即低级数据类型向高级数据看齐(如char向int转换))
一个函数由数据声明部分和执行语句组成。
{ x=y+z; a=b+c; printf("%d%d",x,a); }
小题一练
1、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
要求:使用scanf输入数据,输出计算结果,输出时要求有文字说明,去小数点后两位数字。
2、用getchar函数读入两个字符给c1和c2,然后分别用putchar函数和printf函数输出这两个字符。
思考一下问题:
(1)变量c1和c2应定义为字符型、整型还是二者皆可?
(2)要求输出c1和c2值得ASCII码,应如何处理?用putchar函数还是printf函数?
(3)整型变量与字符变量是否在任何情况下都可以互相代替?如
char c1,c2;
与
int c1,c2;
是否无条件地等价?