面向过程的计算机语言。
关键字
也称为保留字,c语言中具有特定的含义,如int sizeof struct等。
标识符
程序中自定义的名称,用于标识变量名,函数名,文件名等。
标识符(变量)命名的规则:
1、由字母(字母区分大小写)、数字、下划线(_)组成;
2、不能以数字开头;
3、不能使用关键字;
注释
多行注释// 单行注释/* */
数据类型
1、基础数据类型:
字符型 char
整型数 short int long
浮点型(实型) float double
构造类型:结构体 struct
联合体(公用体) union
数组 int arr[10];//定义整型数组,包含10个元素
指针 int *p = &a;
空类型 void
进制转换
一个二进制位为1个比特位bit
一个字节,8个二进制位为一个BYTE
二进制的补码存在计算机的内存中
八进制: 0开头 代表是八进制 3个二进制
printf("%d",010);//按照十进制输出为8
十六进制: 0x开头 代表是十六进制 4个二进制
printf ("%d",0x10);//按照十进制输出为16
printf ("%d",0x20);//按照十进制输出为32
printf ("%d",0x19);//按照十进制输出为25
有符号数、无符号数、原码、反码、补码
有符号数第一位代表符号位,0为正,1为负
如有符号数7:
原码:0000 0111
反码:0000 0111
补码:0000 0111
有符号数-7:(负数的补码为相应的反码加1)
原码:1000 0111
反码:1111 1000
补码:1111 1001
计算机中有符号数都是以二进制的补码形式存在的.
常量和变量
1、整数常量 1,2...
2、字符常量 'a','b'
3、宏常量 #define N 10 一般大写 不能做左值
4、const 常量 不能做左值
5、字符串常量 int *p = "hello world";
整数溢出
/整数溢出,思考题:
//unsigned short a = 0xffff
// 0 ~ 65535
//a=a+1;
--->0
//a 11111111 11111111
//+ 00000000 00000001
//a+1 100000000 00000000
//那么a是多少?
//a=a+99呢?
---->98
//unsigned int a=2;
//a=a-3
//请问a是多少?
//a 10000000 00000010
//-3 11111111 11111101
----->65535
//unsigned short 取值范围 0~65535
//short a = 40000; 取值范围 -32768 ~ 32767
----> -25536
结论
溢出情况类似于汽车里程表,溢出之后返回起始点。
计算一个整数的时候超过该整数所能容纳的最大单位后,会发生溢出,高位舍弃(其实就是当一个较大的整数赋值给一个较小的整数)
当一个小的整数(负数)赋值给一个较大的整数时,符号位保留。
结构体数据类型
struct Test{
int a;
char b;
};
struct Test test={10,'a'};//定义了一个结构体类型的变量Test,并且有初值
test.a=50;//对结构体变量进行操作
test.b='b';
typedef struct Test{
int a;
char b;
}My_test;//typedef 对结构体 struct Test起别名为My_test
My_test test={100,'h'};//test是结构体变量的名字
test.a=200;
结构体的边界对其原则
typedef struct stu{
char a;
char c;
int b;
short e;
int f;
char arr[5];
}My_stu;//sizeof(My_Stu)=?
struct stu2{
int a;
char c;
int b;
short e;
};
//sizeof(stu2)=?
struct stu2{
char c;
short a;
char ch;
int b;
short e;
};
//sizeof(stu2)=?
结论:查找结构体中基础数据类型占用字节数最长的为基准,画出长方形.