const-常属性 const修饰的常变量 const int num = 8; num就不能变了,不可给num赋值了
#define 定义的标识符常量 #define MAX 10 打印MAX就是10
枚举常量 关键词enum
enum Color{ 使用 int main(){
RED, enum Color color = BLUE;
YELLOW, return 0;}
BLUE
};
字符串类型
char arr1[] = "abc";
//"abc"--'a' 'b' 'c' '\0' '\0'是一个转义字符,是字符串的结束方式 ,在计算字符串长度的时候\0是结束标志,不算作字符串内容,隐藏在末尾
转移字符:\t:水平制表符 可以用\来转义别的斜杠或字符,防止被识别成转义字符
比如\ddd,\123,后面就是八进制,转换成十进制后代表码表上面的字符
函数
比如int Add(int x,int y){ 主方法里面就可以直接调用这个函数i int sum=0;
int z = x+y; sum = Add(9,8)
return 0; 打印出sum就是和
} 这是自己设计的自定义函数
移(2进制)位操作符
<<左移
>>右移
&按位与 |按位或 ^按位异或 ~按位取反 (这个也看二进制)
例如 int a =3 int b = 5 若int c=a&b
则011
101
001 输出的答案就是1
若int c = a|b
111 输出的答案就是7
^异或的计算规律:对应的二进制位相同,则为0 对应的二进制位相异,则为1
如int c = a^b
110 输出的答案就是6
C语言中我们表示真假 0表示假 非0表示真
单目操作符 有一个操作位 比如!(逻辑反操作符) 把真变假,把假变真
双目操作符 有两个操作位
三目操作符 有三个操作位
sizeof 计算的是变量/类型所占空间的大小,单位是字节
printf("%d\n",sizeof(a));
整数在内存中存储的时候,存储的是二进制的补码,使用的打印的是这个数的原码
原码符号位不变,其他位取反就是反码,反码加一就是补码
关键字
register 寄存器 用于经常使用的变量访问,因为其高速
typedef--类型定义--类型重定义(就像改名一样)
typedef unsigned int u_int;
unsigned int num1 = 20;
u_int num2 = 10;
static 静态修饰符
1.修饰局部变量,局部变量生命周期变长
2. 修饰全局变量,改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就无法再使用了
3.修饰函数,改变了函数的链接属性,外部链接属性—>内部链接属性
extern---声明外部符号的
#define 定义宏 例如求较大值 #define MAX(x,y) (x>y? x:y)
有一种变量是用来存放地址的—指针变量
int a = 0; int* p = &a;
*p就是解引用操作符 如果写*p=20; 那么a就改变成20
//创建一个结构体类型
struct Book {
char name[20];
int price;
};
int main() {
//利用结构体类型创建一个该类型的结构体变量
struct Book b1 = { "C语言程序设计" ,55 };
printf("书名:%s\n", b1.name);
printf("价格:%d元\n", b1.price);
//利用pb打印出书名和价格
//. 结构体变量.成员
//-> 结构体指针->成员
struct Book* pb = &b1;
printf("%s\n", pb->name);
printf("%d\n", pb->price);
return 0;
}
if语句,如果条件成立,要执行多条语句,需要使用代码块,就是用大括号括起来
switch后面的表达式必须是整型表达式 case后面必须是整型常量表达式
continue是用于终止本次循环的,即本次循环中不执行其之后的语句,而是直接跳到循环中的判断部分,执行下一次循环的入口判断
for循环建议:1:不可以在循环体内修改循环变量,防止for循环失去控制
2:建议for循环语句的循环控制变量的取值采用“前闭后开区间”的写法