数据类型:1.基本数据类型:不可以再分解,自我说明;
2.构造数据类型:由基本数据类型或构造类型通过构造方法组成;
3.指针类型:用来表示某个变量在存储器的地址;
4.空类型:调用后不需要向调用者返回函数值的函数,可以定义为“空类 型”,类型标识符为void。
常量和变量:
区别1:在程序执行过程中,其值不发生改变的量称为常量;其值发生改变的量称为变量。
区别2:常量可以不经过说明直接引用;变量必须先定义后使用。
符号常量:
用标识符(大写)代表一个常量,使用之前先定义。
例:#define PRICE 30
注释:#define是一条预处理命令,称为宏定义命令。以后的程序中所有出现标识符PRICE的地方均为30。
例:
#incIude<stdio.h>
#define PRICE 30
void main()
{
int num,total;
num=10;
total=num*PRICE;
printf("total=%d",total);
}
变量:
变量定义必须放在变量使用之前,一般放在函数体开头。
例:int a=3;
注释:a为变量的名称,3为变量的值,0×0010ff为变量的地址,3在内存中是以二进制存放的。
基本数据类型之整型
整型常量:整型常量就是整常数。
1.十进制整常数:无前缀,数码0-9;
例:237,-857,65535,1787
2.八进制整常数:前缀为0,数码0-7;
例:015,0101,0177777
3.十六进制整常数:前缀为0x或0X,数码0~9,A~F或a~f;
例:0X2A,0XA0,0XFFFF
整型常数后缀:
在16位字长的机器上,基本整型的长度也为16位,因此表示数的范围也是有限的。
十进制:无符号整型常数的范围为0~65535;
有符号整型常数的范围为-32768~+32767;
八进制:无符号数的范围为0~0177777;
十六进制:无符号数的范围为0X0~0XFFFF或0x0~0xFFFF;
如果超过上述范围,就必须用长整型数来表示,长整型用后缀’L’或’l’来表示。
整型变量:
1.基本型,类型说明符为int;
2.短整型,类型说明符为short或short int;
3.长整型,类型说明符为long或long int;
4.无符号型,类型说明符为unsigned。
注释:每种类型占多少个字节和编译器规定有关。
变量定义:类型说明符 变量名标识符,变量名标识符;
例:int a,b,c;
long x,y;
unsigned p,q;
例1:
#include
void main()
{
int a,b,c,d;
unsigned u;
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf("a+u=%d,b+u=%d\n",c,d);
}
例2:
#include
void main()
{
short int a,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);
}
分析:short int占两个字节,共16位,十进制无符号整型常数的范围0~65535有符号数为-32768~+32767而32767+1=32768会溢出,结果会有负号。
例3:
#include
void main()
{
long x,y;
int a,b,c,d;
x=5;
y=6;
a=7;
b=8;
c=x+a;
d=y+b;
printf("c=x+a=%d,d=y+b=%d\n",c,d);
}
分析:结果为整型,不同类型的量可以参与运算并相互赋值。
实型数据
实型常量:
实型也称为浮点型,实型常量也称为实数或者浮点数,在C语言中,实数只采用十进制,他有两种形式:十进制小数形式,指数形式。
1.十进制数形式:由数码0-9和小数点组成(必须要有小数点)
例如:0.0 25.0 5.789
2.指数形式:由十进制数,阶码标志“e”或“E”以及阶码组成,阶码为十进制整数,可以带符号;
例如:2.1E5 3.7E-2 -2.8E-2
注:标准C允许浮点数使用后缀。后缀为“f”或“F”,即表示该数为浮点数。
例:356f与356.等价
实型变量:
1.单精度(float型)
2.双精度(double型)
3.长双精度(long double型)
例:实型数据的舍入误差
#include
void main()
{
float a,b;
a=123456.789e5;
b=a+20;
printf("%f\n",a);
printf("%f\n",b);
}
分析:由于实型变量是由有限的存储单元组成的,因此提供的有效数字总是有限的。
例2:
情形一:
#include
void main()
{
printf("%f",1.0/3*3);
}
情形二:
#include
void main()
{
printf("%d",3/2);
}
情形三:
#include
void main()
{
printf("%d",1/3*3);
}
字符型数据
字符常量:
字符常量是用单引号括起来的1个字符。
例:'a' 'b' '=' '+'
在C语言中,字符常量有以下特点:
1.字符常量只能用单引号括起来,不能用双引号;
2.字符常量只能是单个字符,不能是字符串;
3.字符可以是字符集中任意字符,但数字被定义为字符型之后就不能参与数值运算。
字符变量:
用来存储字节常量,即单个字符。
例:char a,b;
转义字符:
转义字符是一种特殊的字符常量,以反斜杆“\”开头,后跟一个或几个字符,具有特定的含义。如“\n”就是一个转义字符,表示的是“回车换行”。
例:
#include
void main()
{
int a,b,c;
a=5;b=6;c=7;
printf("ab c\tde\rf\n");
printf("hijk\tL\Bm\n");
}
字符数据在内存中的存储形式及使用方法:每个字符常量被分配一个字节的内存空间,字符值是以ASCII码的形式存放在变量的内存单元中。
例:x的ASCII码是120,y的ASCII码是121,
a='x';b='y';
实际上是在a,b两个单元内存放的120,121的二进制代码。
例1:
#include
void main()
{
char a,b;
a=120;
b=121;
printf("%c,%c\n",a,b);
printf(%d,%d\n",a,b);
分析:a,b值得输出形式取决于printf函数格式中的格式符,当格式符为“c”时,对应输出的变量值为字符,当格式符为“d”时,对应输出的变量的值为整数。
例2:
#include
void main()
{
char a,b;
a='a';
b='b';
a=a-32;
b=b-32;
printf("%c,%c\n%d,%d\n,a,b,a,b);
}
字符串常量:
字符串常量是由一对双引号括起来的字符序列,例如:“CHINA”,“C program”都是合法的字符串常量。
字符串常量与字符常量的区别:
1.字符常量由单括号括起来,字符串常量由双括号括起来;
2.字符常量只能是单个字符,字符串常量则可以含一个或多个字符;
3.可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。
例如:可以char a='a', 不可以 char a="a"。
4字符常量占一个字节的内存空间,字符串常量占的内存字节数等于字符串中的字节数加一。增加的一个字节存放字符“\0”这是字符串结束的标志。