1.1 数据的表现形式
在C中,数据有两种表现形式:常量和变量
一.常量
1.整型常量:1213
2.实型常量:
1)十进制小数 :1.23
2)指数形式:1.23E3(1.23*10^3)
3.字符常量:
1)普通字符:‘d’,‘5’
2)转义字符:
\n-------换行
\t -------空出一个tab键的位置
\abc ----------abc为八进制,如\101十进制为65,是A的ASCII码值,则直接输出A
\xabc-------- abc为16进制,如\x42十进制为64,是B的ASCII码值,则直接输出B
4.字符串常量:----"china"
5.符号常量:-------#define PI 3.14
二.变量:必须先定义后使用
三:常变量:在定义变量前加const,如const int a,意思是只读,变量存在期间不能改变。(C99才能正常使用)
四:标识符:C语言规定标识符只能由字母,数字,下划线三种字符组成,第一个字符必须为字母或者是下划线。
1.2 数据类型
基本类型:int(整型),short (短整型),long(长整型),float(单精度浮点型),double(双精度浮点型),char(字符型)
枚举类型(enum)
空类型(void)
定义类型(typedef)
构造类型:*(指针类型),[](数组类型),struct(结构体类型),union(共用体类型)
int(整形)---- 4字节(32位)----范围:-2^31~~2^31-1
若存的是正数,则直接将二进制存入,
若为负数,先写出绝对值的源码,然后取反+1得到补码,然后存入。
最大能存储:2^31-1,其中第一位为符号位,0代表正数,1代表负数
2^31二进制(源码):0111 1111 1111 1111 1111 1111 11111 1111
取反:1000 0000 0000 0000 0000 0000 0000 0000
加1得:1000 0000 0000 0000 0000 0000 0000 0000
则补码为:-2^31
所以int以4字节存入时范围为(-2^31~~2^31-1),以2字节存入时范围为(-2^15~~2^15-1)
unsigned int(无符号整形)----4字节(32位)----范围:0~~2^32-1
没有1或者0表示正负,所以最大为32位全是1,即最大为2^32-1
short(短整型)----2字节(8位)----范围:-2^15~~2^15-1
unsigned short(无符号短整型)----2字节(8位)----范围:0~~2^16-1
long(长整形)---- 4字节(32位)----范围:-2^31~~2^31-1
long long(双长整形)---- 8字节(64位)----范围:-2^63~~2^63-1
char(字符型)----1字节(8位)-----范围:-2^7~~2^7-1----常见'0'ASCII值为48,‘a’为97,‘A’为65
float(单精度浮点型)----4字节(32位)---保留6位
double(双精度浮点型)----8字节(64位)----保留15位
enum(枚举类型):只能从范围内数据进行选择,类似周一到周日
void(空类型):
1.任何类型的指针都可以显式转换为void类型,且不会丢失数据
2.限定函数的类型
3.限定函数的返回值
typedef(定义类型):可以将一个复杂的函数类型重新命名,如typedef unsigned char uchar,将unsigned char重新命名为uchar,然后就可以用uchar代替unsigned char。
*(指针类型):*p:代表p是指针类型,p中存放的所指向的地址,
int *p:定义了一个指针变量
struct(结构体类型):各个成员有各自的内存空间,一个结构变量的总长度是各成员长度的总和。
union(同构体类型):各个成员共享一段空间,一个联合变量的长度等于各个成员中最长的长度。
1.3运算符
优先级依次降低:
初级运算符:(),[],->
单目运算符(只有一个变量运算):++,--,-(负号),!(非),sizeof(求长度)
双目运算符:*,/,%,+,-,
关系运算符:>,<,>=,<=,==,!=
逻辑运算符:||,&&
1.4数据的输入输出(printf和scanf)
printf("格式控制",参数表列);
修饰符是在格式符后面,如int a=10;printf(“%5d”,a);输出整型a,且空5格
如float b=3.14356; printf(“%.2f”,b);输出浮点型b,保留两位小数
scanf(“格式控制”,地址表列);
1.5声明与定义
int i; 定义:创建一个变量,为其分配内存空间,并为它取名字,一个变量只能定义一次;
extern int i;声明:告知编译器,这个名字(变量名)已经匹配在一块内存上了,但是并未为其分配内存;
1.6变量初始化和变量存储类型
默认初始化规则: 全局变量(垃圾值)、静态变量(0) 局部变量 (垃圾值)
人工初始化: 数值变量 字符变量 指针变量 数组
C的存储类别有四种:auto、static、register和extern。
auto
是所有局部变量默认的存储类。
register
变量存储在cpu的寄存器内。
static 当定义为全局静态变量时,只有本文件的代码才可以访问,其他文件不可访问。当定义为局部静态变量时,每次调用函数不会都重新赋值。
extern 声明变量,表明变量或函数的定义在别的文件中,下面用到的这些变量或是函数是外来的
当调用f函数时,b只有第一次被赋值0,。