初识C语言(2)

目录

1.选择语句

2. 循环语句

3.函数 

 4.数组

5.操作符 

1.算数操作符:

2.移位操作符(二进制)

3.位操作(二进制)

4.赋值操作符

5.单目操作符

 #原码 反码 补码

6.关系操作符

7.逻辑操作符

8.条件操作符

9.逗号表达式

10.下标引用、函数调用和结构成员

11.常见关键字

#空函数

#typedef

#static

# #define

12.数组与指针

1.内存

2.指针

13.结构体


何事秋风悲画扇

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。

13.结构体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

charslunu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值