1、常量
在程序运行过程中,其值不能被改变的量。
A、整形常量(int、long、short)
B、实型常量(float、double)
C、字符常量(普通字符:使用单撇号括起来的一个字符)
D、转义字符(以字符“”开头的字符序列)
E、字符串常量(用双撇号把若干个字符括起来,字符串常量是双撇号中的全部字符但不包括双撇号本身。)
F、符号常量(用#define指令,指定用一个符号名称代表一个常量。)
#define PI 3.14 #注意行末没有分号
注:符号常量不占内存,只是一个临时符号,代表一个值,在预编译后这个符号就不存在了,故不能对符号常量赋新值。
2、变量
在程序运行过程中,其值发生改变的量。(变量必须先定义,后使用)
变量名:实际上是以一个名字代表的一个存储地址。
变量值:通过变量名找到相应的内存地址,从该存储但愿中读取数据。
3、常变量
C99允许使用常变量,方法是在定义变量时,前面加一个关键字const
const float pi =3.1415926 //定义常变量
4、标识符
只能由数字、字母和下划线三种字符组成,且第一个字符不能以数字开头。
5、数据类型
类型:对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。不同的类型分配不同的长度和存储形式。
注:在存储单元中的存储(整数)方式,用补码进行表示,且存放整数的存储单元中,最左面一位用来表示符号的(0:表示数为正,1:表示数为负)。
#include <stdio.h> void main() { short int a,b; a=32767; b=a+1; printf("a=%d,a+1=%d ",a,b); a=-32768; b=a-1; printf(" a=%d,a-1=%d ",a,b); }
//该程序发生的情况称为“溢出”,但运行时不报错。32767+1应该等于32768,但运行结果却是-32768。
测试不同整数类型所占的字节数的代码如下:
#include <stdio.h> void main() { printf("int:%d bytes ",sizeof(int)); /*int在Tc2.0中字节数为2,在VC中为4*/ printf("short:%d bytes ",sizeof(short)); /*short型的字节数为2*/ printf("long:%d bytes ",sizeof(long)); /*long型的字节数为4*/ }
其中sizeof的作用是求对象在计算机内存中所占用的字节数。一般形式为:sizeof(object),object可以是变量、表达式或者数据类型名。
注:凡是以小数形式或指数形式出现的实数均为浮点型常量,在内存中都是以指数形式存储。
C语言运算符
重点
1、强制类型转换运算符((类型))----强制转换数据可能会失真。
2、成员运算符(. ->)
3、下标运算符([ ])
4、其他(如函数调用运算符())
注:不同类型数据间的混合运算除了用户强制转化,编译系统也会自动完成,用户不必过问。(自动完成数据转换的称为隐式转换,即低级数据类型向高级数据看齐(如char向int转换))
C语言语句
一个函数由数据声明部分和执行语句组成。
1、控制语句。
2、函数调用语句。
3、表达式语句。(一个表达式的最后加一个分号就成了一个语句)
4、空语句。(;)
5、复合语句。(用{}把一些语句和声明括起来称为复合语句即语句块)
{ x=y+z; a=b+c; printf("%d%d",x,a); }
6、赋值语句。(赋值表达式的末尾没有分号,而赋值语句的末尾必须有分号。)
小题一练
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;
是否无条件地等价?