目录
何事秋风悲画扇
1.选择语句
2. 循环语句
1.while语句
2.for语句
3.do...while语句
3.函数
4.数组
5.操作符
1.算数操作符:
+ - * / %(这个是取模即取余)
2.移位操作符(二进制)
<<(左移) >>(右移)
移位就是把整个代码例如int a=1整形占4byte即32bit就是00...1.若int b=a<<1,把a整个向左移动一个,第一个被移除范围外删去,最后一个多出一个空补一个0即000...10此时b=2单a仍然是1
3.位操作(二进制)
& 按位与 (3=011,5=101,3&5=001即1.只有两个同时为1的时候为1其余都为0)
|按位或 (两个中只要有一个1就为1。3|5=111即为7)
^按位异或(相同则为0,相异则为1。3^5=110即为6)
4.赋值操作符
= += -= ^= /= >>= <<= &= ^= *==
举例:a+=2为a=a+2
5.单目操作符
#c语言中0是假非0为真
!逻辑反操作(把真变假,假变真。如a=10,则!a=0.。a=0,!a=1)
- 负值
+正值
&取地址
sizeof操作数的类型长度(以字节为单位),计算int a=10所占空间大小,printf("%d\n ",sizeof(a)或者sizeof(int)或者sizeof a);
~对一个数的二进制按位取反(比如一个二进制为1010按位取反就是0101)
--前置、后置--
++前置、后置++
/*后置(先使用,再++or--),例如,int a =10;int b=a++;此时a=11,b=10.
前置(先++or--,后使用),例如,int a=10;int b=++a;此时a=11,b=11
区别只是在于对于b赋值。后置不关B事,前置有关*/
*间接访问操作符(解引用操作符)
(类型)强制类型转换
例如 int a=(int)3.14→a=3
#原码 反码 补码
计算机中,机器数的最高位为符号位,0为+,1为-
原码(符号不变其它按位取反)→反码(加一)→补码
正数的啥码都是其本身
对于带符号计算的减法来说原码行不通,而反码会出现-0的情况,补码不会,所以计算机一般采用补码计算
特殊,八位二进制[10000000]=-128。故其范围为-128~127
6.关系操作符
>
>=
<
<=
!=(不等于)
==(等于)
7.逻辑操作符
&&逻辑与(一个为假全为假)
||逻辑或(全假才为假)
8.条件操作符
(三目操作符)
exp1?exp2:exp3;(exp1为真执行exp2否则执行exp3)
9.逗号表达式
exp1,exp2,exp3,....expN
10.下标引用、函数调用和结构成员
[] () . ->
11.常见关键字
auto(局部变量or自动变量,每个局部变量前都有auto故省略)
break(c语言中循环语句停止循环,swich case语句中用到)
case const(常变量) continue(循环语句里面的)
default(默认,swich case语句里面的)
do(do...while循环) double else enum(枚举)
extern(引入外部符号) floatn for go...to if int long
register(建议把什么定义成寄存器) return short
signed(定义有符号的变量,无符号的就是unsigned。也就是永为正数 )
sizeof(计算字节大小) static(静态) struct(结构体)
typedef(类型定义) union(联合体/共用体)
void(无) volatile(c语言段位的关键字) while
#空函数
如果定义函数时只给出一对花括号{}而不给出其局部变量和函数体语句,则称该函数为“空函数”
void这种形式的函数定义,没有返回值
#typedef
类型定义-类型重定义
eg:typedef unsigned int u_int;
1.unsigned int unm=20;
2.un_int num2=20;
1和2的类型没有任何的区别(相当于给它弄了一个小名)
#static
f10调试,f11进入一个函数
尽量将全部变量的大小设置的小一点,1024*1024就有点大了
一般有未处理的异常,属于栈的问题,解决方法 属性-》链接器-》系统-》堆栈保留大小和堆栈提交大小 中将数据增加。一般visual默认的是1M
static修饰静态局部变量,使其生命周期变长eg:
当我们在int a前面加上static后调试结果变成了这样:
也就是说,在程序第二次运行的过程中,并没有经过int a=1这个过程,通过调试我们也可得,而是直接a++,导致第二次运行后a为3.
static修饰全局变量,改变了变量的作用域,让静态的全局变量只能在自己的作用域里面使用(比如一个用extern)
也可以修饰函数,改变函数的链接属性。外部链接属性→内部链接属性
# #define
定义标识符常量,eg:#define MAX 100.
定义宏,eg:#define MAX(x,y) (x>y?x:y)
12.数组与指针
1.内存
我们把内存划分为一个一个小的单元,给每个单元编号。通常我们买电脑是32为或者
64位,位就是地址线/数据线,可以产生2^32个编号,若每一个单元的大小为bit,则
总共有2^32/8/1024/1024/1024=0.5GB大小显然不合适所以我们用byte,即4G
2.指针
int a=10;(内存里面创建了一个变量,变量叫a这块空间里面有自己的地址如000000000014FD14,空间里面放了一个值为10)
int* p=&a;(将a的地址存放在p的空间里面)
*p=20;(对p里面的地址进行操作,*p其实就是a,相当于把20放入a的空间里面)
指针是个变量,它是用来存放地址的,我们通过*解引用
我们已知int a是四个字节,那么int*p是几个字节呢?在32位计算机里面,每一个序列有32位,也就是32个bit即4bite,64位即8bite。