文章目录
一、C语介绍
1.C语言作用
C语言使用函数进行分装
2、程序介绍
void main()
{
printf(“世界,您好!”);
}
main是主函数的函数名,表示这是一个主函数
每一个C源程序都必须有,且只能有一个主函数(main函数)
函数调用语句,printf函数的功能是把输出的内容送到显示器去显示。
printf函数是一个由系统定义的标准函数,可在程序中直接调用。
eg:
#include<stdio.h>
#include<math.h>
void main()
{
double x,s;
printf("intput number:\n");
scanf("%lf",&x);
s=sin(x);
printf("sin of %lf is %lf\n",x,s);
}
二、C数据类型
1.数据类型介绍
1、基本数据类型:基本数据类型最主要的特点是,其值不可以再分解为其它类型。也就是说,基本数据类型是自我的说明。(j就相当于细胞,能构造各种各样的器官和组织)
2、构造数据类型:构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义。也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或又是构造类型。在C语言中,有一下几种构造类型:
(1)数组类型
(2)结构体类型
(3)共用体(联合)类型
3、指针类型:指针是一种特殊的,同时又是具有重要作用的数据类型。其值用来表示某个变量在内存储器的地址。虽然指针变量的取值类似于整型量,但这是两种类型完全不同的量,因此不能混为一谈。
4、空类型:在调用函数值时,通常向调用这返回一个函数值。这个返回的函数值是具有一定的数据类型的,应在函数定义及函数说明中给以证明,int max(int a,int b)中“int”类型说明符及表示该函数的返回值为整型量。但是,也有一类函数,调用后并不需要向调用者返回函数值,这种函数可以定义为“空类型”。其类型说明符为void。
三、基本数据类型量
1.常量和变量
1、分类:可分为常量和变量
(在程序执行过程中,其值不发生改变的量称为常量,其值可变的量称为变量)
它们可与数据类型结合起来分类。例如:可分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、枚举常量、枚举变量。在程序中常量可以不经说明而直接引用,而变量则必须先定义后使用。
(整型量包括整型常量、整型变量)
2.符号常量
符号常量:用标识符代表一个常量。
符号常量在使用之前必须先定义,其一般形式:
#define 标识符 常量
其中#define也是一条预处理命令(预处理命令都以“#”开头),称为宏定义命令,其功能是把该标识符定义为其后的常量值。已经定义,以后在程序中所有出现的该标识符的地方均代之以该常量值。
习惯上符号常量的标识符用大写字母,变量标识符用小写字母
eg:
#define PRICE 30
//后面再出现PRICE就自动替换成30
void main()
{
int num,total;
num=10;
total=num*PRICE;
printf("total=%d",total);
}
注: 1、用标识符代表一个常量,称为符号常量 2、符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值。
3、使用符号常量的好处
(1)含义清楚
(2)能做到“一改都改”
3.变量
其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。 变量定义必须放在变量使用之前。一般放在函数体的开头部分。要区分变量名和变量值是两种不同的概念。
四、整型数据
1.整型常量
整型常量就是整常数。在C语言中,使用的整常数有八进制、十六进制和十进制三种。
1)十进制整常数:十进制整常数没有前缀、其数码为0-9
在程序中是根据前缀来区分各种进制数的。
2)八进制整常数:八进制整常数必须以0开头。已0作为八进制的前缀。取值0-7.八进制通常是无符号数。eg:015(十进制为13)、0101(65)、0177777(65535)
3)十六进制整常数:前缀为0X或0x。取值0-9,A~F 或 a~f
eg:0X2A(42)、0XA0(180),0XFFFF(65535)
4)整型常数的后缀:在16位字长的机器上,基本整型的长度也为16位,因此表示的数的范围也是有限的。若超过范围,就必须用长整型来表示。长整型是用后缀“L”或“l”来表示的。
2.整型变量
1、整型数据在内存中的存放形式
注:这里的3在内存中是以二进制的形式保存的
内存中的二进制存储
(一个字节BYTE=8位(bit))
数值是以补码表示的
2、整型变量的分类
(注:这里占多少个字节根系统和编译器规定有关!!!!)
1)基本类型:类型说明符为int,在内存中占4字节
2)短整量:short int或short,所占内存和取值范围均与基本型相同
3)长整型:long int或long,4字节
4)无符号型:unsigned
在编译器里查找字节大小
#include<stdio.h>
void main()
{
printf("%d\n",sizeof(int));
}
3、整型变量的定义
一般形式:
类型说明符 变量名标识符 ,变量标识符,…;
eg:
int a, b, c,…;
long a, b, c,…;
unsigned a, b, c,…;
代码
#include<stdio.h>
void main()
{
int a, b, c, d;
unsigned h;
a=12;
b=-24;
h=10;
c=a+h;
d=b+h;
printf("a+h=%d b+h=%d\n",c,d);
}
4、整型数据的溢出
#include<stdio.h>
void main()
{
int a, b;
b=a+1;
a=32767;
printf("%d %d\n",a,b);
}
32767:0111111111111111
-32768:1000000000000000
五、实型数据
1.实型常量的表示方法
实型也称为浮点型。实型常量也称为实数或浮点数。在C中只有十进制(小数或指数)
1)十进制形式:由0-9和小数组成
2)指数形式:由十进制,加阶码标志“e”或“E”以及阶码组成
一般形式:
a E n(a为十进制数,n为十进制整数)
eg:
2.1E52.1*10^5)
标准C允许浮点数使用后缀。后缀为f或F即表示该数为浮点数。如356f和356.是等价的
2.实型变量
1、实型数据在内存中的存放形式
实型数据一般占4个字节(32位)内存空间。按指数形式存储。实数3.14159在内存中的存放形式:
注:
1)小数部分占的位(bit)书愈多,数的有效数字愈多,精度愈高。
2)指数部分占的位数愈多,则表示的数值范围愈大。
2、实型变量的分类
实型变量分为:
单精度(float)
双精度(double)
长双精度(long double)
3、实型数据的舍入误差
由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的。
六、字符型数据
字符型数据包括字符常量和字符变量
1.字符常量
字符常量是用单引号括起来的一个字符
eg: ’a‘ 、‘b’
在C中字符常量有以下几个特点:
1)字符常量只能用单引号括起来,不能用双引号或其他括号
2)字符常量只能是单个字符,不能是字符串
3)字符可以是字符集中的任意字符。但数字被定义为字符型后就不能参与数值运算。
2.字符变量
字符变量用来存储字符常量,即单个字符
字符常量的类型说明符是char
eg:char a, b;
3.转义字符
转义字符是一种特殊的字符常量。转义字符以反斜线“\”开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。
例如:printf函数中的“\n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些有一般字符不便于表示的控制代码
常用的转义字符及其含义
4.字符数据在内存中的存储形式及其使用方法
每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元中的。
如:X的十进制ASCII码是120,Y的十进制ASCII码是121。对字符变量a,b赋予‘X’“Y”值:
a=‘X’;
b=7;
实际上是在a,b两个单元内存放120和55的二进制代码
(65-90 97-122)
向字符变量赋以整型
#include<stdio.h>
void main()
{
char a, b;
a = 120;//a='x';
b = 121;//a='y'
printf("%c, %c\n",a,b);//输出变量值为字符
printf("%d, %d\n",a,b);//输出变量值为整数
}
小写字母换成大写字母
#include<stdio.h>
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);
}
六、各类数值型数据之间的混合运算
变量的数据类型是可以转换的。转换的方法有两种,一种是自动转换,一种是强制转换。自动转换发生在不同数据类型的量混合运算时。由编译系统自动完成。
1.自动转换规则
1、若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
2、转换按数据长度增加的方向进行,以保证进度不降低。如int型和long型运算时,先把int量转换成long型再进行运算。
3、所有浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再运算。
4、char型和short型参与运算,必须先转换成int型
5、在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边的类型将自动转换为左边量的类型。如果右边量的数据长度比左边的长时,将丢失一部分数据。
如:int = long
long自动转换成int型
类型自动转换规则
代码
#include<stdio.h>
void main()
{
float p=3.14259;
int a,b=5;
a=b*b*p;//b,p都转换成double型计算
printf("a=%d\n",a);
}
2.强制类型转换
强制类型转换是通过类型转换运算来实现的
一般形式:
(类型说明符)(表达式)
其功能是把表达式的结果强制转换成类型说明符所表示的类型
eg:
(float)a 把a转换成实型
(int )(x+y) 把表达式结果转换成整型
注意点:
1)类型说明符和表达式都必须加括号(单个变量可以不加括号),(int)x+y则是把X转换成int型后在加Y
2)无论是强制转换还是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时转换,而不改变数据说明时对该变量定义的类型
#include<stdio.h>
void main()
{
float b=5.75;
printf("(int)b=%d,b=%f\n",(int)b,b);
}
3.自增、自减运算符
1、自增“++”
++i i自增1后再参与其它运算。
i++ i参与运算后,i的值再自增1
2、自减
–i i自减1后再参与其它运算
i-- i参与运算后,i的值再自减1
#include <stdio.h>
void main()
{
int i = 8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
}
4.类型转换
字符型赋予整型,由于字符型为一个字节,而整型为四字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0.整型赋予字符型,只把低八位赋予字符型。
#include <stdio.h>
void main()
{
int a,b=322;
float x,y=8.88;
char c1='k',c2;
a=y;
x=b;
a=c1;
c2=b;
printf("%d,%f,%d,%c\n",a,x,a,c2);
}