目录
运算符
1.1逻辑运算符
&&逻辑与:全一则一,有零则零
|| 逻辑或:有一则一,全零为零
! 逻辑非:结果取反
printf("%d\n",118>99); //1 printf("%d\n",18>99); //0
截断法则
逻辑与运算中,前边表达式结果为假,后边表达式不再执行,返回假
逻辑或运算中·,前边表达式结果为真,后边表达式不在告状,返回真
printf("%d\n",118>99 && 5>9 );// 0 printf("%d\n",118>99 || 5>9 );//1
printf("%d\n",!(118>99) || 5>9 ); //0
1.2位运算符
操作二进制数
& 位与:全一则一,有零则零
| 位或:有一则一,全零则零
^ 异或:相同为0,不同为1
负数运算:
注意:整数以补码的二进制进行存储,计算
原码 | 反码 | 补码 | |
正数 | 相同 | 相同 | 相同 |
负数 | 相同 | 除符号位外,其他按位取反 | 反码+1 |
~ 按位取反
<< 左移 左移几位右边补几个零 左移几位就乘以2的几几次方
>> 右移 右移几位左边补几个零
int a=6,b=10; //6 : 110
int c=a&b; //10:1010
printf("%d\n",c);//2 //10:1010
1.3关系运算符
> >= < <= == ~=
=赋值运算符 ==等于
1.4三目运算符(条件运算符)
表达式1?表达式2:表达式3
先判断表达式1是否成立 ,如果成立执行表达式2,如果不成立执行表达式3
1.5赋值运算符
= += -= *= /= %=
a-=5 展开 a=a-5
扩展:逗号运算符(顺序求职运算符)
优先级:
单算移关与,异或逻条赋
单目运算符:++ -- ~ !
算术运算符:/ * % + -
移位运算符: << >>
关系运算符: > >= < <= == !=
位与运算符:&
异或运算符:^
位或运算符:|
逻辑运算符: && ||
条件运算符: ? :
赋值运算符: = += -= /= %= *=
分隔符
空格 tab 换行
标点符号
所有的标点符号必须英文
变量
程序运行过程中会发生变化的量
格式:存储类型 数据类型 变量名 :(auto) int a
存储类型:决定变量的存储的位置
数据类型:巨顶变量开辟的空间大小
名称 | 大小(字节) | 取值范围 | |
int | 整型 | 4 | |
char | 字符型 | 1 | |
short | 短整型 | 2 | |
long | 长整型 | 32位:4 ;64:8 | |
float | 单精度浮点型 | 4 | 有效位数6-7位 |
double | 双精度浮点型 | 8 | 15-16位 |
局部变量和全局变量的区别
局部变量 | 全局变量 | |
定义位置 | 函数内部 | 函数体外 |
初值 | 未初始化,值为随机值 | 未初始化,值为0 |
作用域 | 当前函数体内部 | 整个程序 |
生命周期 | 同当前函数一起使用 | 同整个函数 |
存储位置 | 栈区 | 全局区 |
虚拟内存空间
栈区:系统自动开辟,回收(函数体内部定义的变量)
堆区:程序员手动开辟(malloc)、回收(free)
全局区、静态区
常量区:char *P
常量
数值型常量:八进制、十进制、十六进制
浮点型常量:单精度,双精度
字符常量 :用单引号包裹,char a=‘q';
char a='A'; char b='123';
printf("%c\n",a); //A printf("%c\n",b);//'3'
char c=0101; char d='\101';
printf("%c\n",c);//A printf("%c\n",d);//A
char d='\101';
char e='\x41';
printf("%c\n",e);//A
\转义字符
字符串常量:用双引号包裹 “hello” 五个字符+’\0‘字符串结束标志==6个字符
标识常量:
宏定义:格式:#define 宏名 常量值或表达式
宏名:一般用大写,目的跟变量进行区分
特点;先进性单纯的替换,替换结束后在进行计算
#define N 2
#define M N+3// 2+3
#define NUM N+M/2+1// 2+2+3/2+1
void main()
{
int a = NUM;
printf("%d\n",a);
}