c语言1 2 与0.5 2,C语言复习(二)

一、程序结构

1.选择语句

if ... else...

2.循环语句

while....

for...

二、函数

自定义库函数 & 库函数

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

Add(int x, int y)

{

int z = x + y;

return z;

}

int main()

{

int num1 = 10;

int num2 = 20;

int sum = 0;

sum = Add(num1, num2);

printf("sum = %d\n",sum);

return 0;

}

结果:

cdbe843602ed84d437720dc3b4559e34.png

三、数组

数组(下标默认从0开始)

arr[10]={0};

int main()

{

int arr[] = {1,2,3,4,5,6,7,8,9,10};

int i = 0;

while (i < 10)

{

printf("%d ", arr[i]);

i++;

}

return 0;

}

结果:

7b79f7971f4c5f7f7cb7b96fe38c70e7.png

四、操作符

1.单目操作符

! 逻辑反操作符: 0 假 非0 真

- 负值 + 正值

& 取地址

sizeof 操作数的类型长度(以字节为单位)

~ 对一个数的二进制按位取反

-- 前置、后置

++ 前置、后置

* 间接访问操作符(解引用操作符)

(类型) 强制类型转换(不建议使用)

sizeof:

int main()

{

int a = 10;

int arr[10] = { 0 };

int sz = 0;

printf("数组占存储空间 %d 字节\n", sizeof(arr));

//计算数组元素个数

sz = sizeof(arr) / sizeof(arr[0]);

printf("数组元素个数为 %d\n", sz);

//sizeof 计算的是变量/类型所占空间的大小,单位是字节

printf("%d\n", sizeof(a)); //OK

printf("%d\n", sizeof(int)); //OK

printf("%d\n", sizeof a); //OK

//printf("%d\n", sizeof int); //ERROR

return 0;

}

结果:

8433831504ef3460db068e8a6b2d6553.png

~ :

int main()

{

int a = 0;//4个字节,32bit

int b = ~a;//按位取反

//负数在内存中存储的时候,存储的是二进制的补码,最高位是符号位

printf("%d\n", b); //答案是-1!!!

//printf打印的是原码 补码-1=反码 反码符号位不变,其余位取反=原码

return 0;

}

结果:

80e234f1d2012dd465621cb9347c3c9a.png

类型强制转换操作符:

int main()

{

int a = (int)3.14; //强制类型转换double -> int

return 0;

}

2.双目操作符

a.算术操作符

+ - * / %(求模运算)

b.移位操作符

左移操作符:左边丢弃,右边补零

右移操作符:右边丢弃,左边补原符号位

int main()

{

int a = 1;

int b = a << 2; //a本身不会移位

printf("a = %d b = %d\n",a,b);

return 0;

}

结果:

f60a5279d48c1313c9cc74bf4ce2aa45.png

c.位操作符

& 按位与

| 按位或

^ 按位异或:对应的二进制位相同为0,相异为1

int main()

{

int a = 3; //011

int b = 5; //101

int c = a&b;

printf("%d\n", c); //1

c = a | b;

printf("%d\n", c); //7

c = a ^ b;

printf("%d\n", c); //6

return 0;

}

结果:

2e763af77c3f1c29d576653242bf7d63.png

d.赋值操作符

=

e.复合赋值符

+= -= &= *= /= |= %= ^= <<= >>=

f.关系操作符

> >= < <= != ==

g.逻辑操作符

&& - 逻辑与

|| - 逻辑或

3.三目操作符

条件操作符

exp1 ? exp2 : exp3;

4.逗号表达式

exp1,exp2,exp3,....,expn

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

[] () . ->

五、常见关键字

auto break case char const continue default do double else

enum extern float for goto if int long register return short

signed unsigned sizeof static struct switch typedef union void

volatile while

注:变量名不能和关键字重合

auto:

int main()

{

auto int a = 10;//局部变量均为自动变量(一般省略)

return 0;

}

register:

计算机 存储数据

寄存器(register)

高速缓存

内存

硬盘

register int a = 10;//建议把a变量存放在寄存器中

signed:

signed int = int

union:

联合体/共合体

typedef:

类型定义,即类型重定义

eg: typedef unsigned int uint_32;

static:

* static修饰局部变量时,局部变量的生命周期变长

* static修饰全局变量时,改变了变量的作用域 - 让静态的全局变量只能在自己所在的

源文件内部,出了源文件就无法使用了。

* static修饰函数时,改变了函数的链接属性。普通函数具有外部链接属性,被static

修饰的函数只具有内部链接属性。

void test()

{

static int a = 1; //a是一个静态的局部变量

a++;

printf("a = %d\n", a);

}

int main()

{

int i = 0;

while (i < 5)

{

test();

i++;

}

return 0;

}

结果:

26fb20added680c3ac27227251af41ff.png

六、#define

1.#define定义标识符常量

eg:#define MAX 100

2.#define定义宏-带参数

eg:#define MAX(a,b) (a>b?a:b)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值