1、分支语句
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int input = 0;
printf("你能学好C语言吗?(1/0)\n");
scanf("%d", &input);//1/0
if (input == 1)
printf("相信你\n");
else
printf("进厂吧\n");
return 0;
}
2、循环语句
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int line = 0;
while (line<20000)
{
printf("敲一行代码,%d\n", line);
line++;
}
if (line>=20000)
{
printf("好offer,%d\n",line);
}
return 0;
}
3、函数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("请输入两个数:");
scanf("%d%d", &num1, &num2);
sum = num1 + num2;
printf("sum=%d\n", sum);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int Add(int x, int y)
{
int z = x + y;
return z;
}
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("请输入两个数:");
scanf("%d%d", &num1, &num2);
sum = Add(num1, num2);
printf("sum=%d\n", sum);
return 0;
}
我用函数定义了加法,以后直接调用这个函数。 简化代码
4、数组
一组相同类型元素的集合 int arr[10]={1,2,3,4,5,6,7,8,9,10}; //定义一个整型数组最多放10个元素
数组下标从0开始 调用时 可选择n-1 代表数组中的n eg:printf("%d",arr[4]); 打印为5
数组+while循环的应用
5、操作符
算术操作符
+ 加
- 减
* 乘
/ 除 eg:5/2=2
% 取模=取余数 eg:5/2=1
移位操作符
<< 左移二进制位
>> 右移二进制位
位操作
二进制位操作
& 按位 与 即都真为真 8&3=1000&0011=0000=0
| 按位 或 即都假为假 6&3=0110|0011=0111=7
^ 按位 异或 即相异为1 相同为0 3^5=0011^0101=0110=6
赋值操作符
= 赋值
== 判断相等
+= eg:a =a+10 等价于 a +=10
-= eg:a =a-10 等价于 a -=10
*= eg:a =a*10 等价于 a *=10
/= eg:a =a/10 等价于 a /=10
&= eg:a =a&10 等价于 a &=10
|= eg:a =a|10 等价于 a |=10
^= eg:a =a^10 等价于 a ^=10
<<= eg:a =a<<10 等价于 a <=10
>>= eg:a =a>>10 等价于 a >=10
单目操作符
! 逻辑反操作 把真变成假,把假变成真 只有0为假 其他全为真
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
前置--、 先--,再使用 eg:int a=10 int b = --a; 得出a=9 b=9
后置-- 先使用,再-- eg: int a =10 int b = a-- ; 得出a=9 b=10
前置++ 先++,再使用 eg:int a=10 int b = ++a; 得出a=11 b=11
后置++ 先使用,再++ eg: int a =10 int b = a++ ; 得出a=11 b=10
* 间接访问操作符(解引操作符)
(类型) 强制类型转换
【补充】原码、反码、补码:
1.只要是整数,内存中存储的都是二进制的补码 【整数包含正整数和负整数】
2.正整数:原码、反码、补码 都相同
3.负整数:
原码:直接按照正负,写出二进制序列,最高位为符号位0代表正,1代表负。
反码:把原码的符号位保持不变,其他位按位取反
补码:反码+1
eg:
-2的原码:4个字节=32个bit 10000000000000000000000000000010 加上符号位一共32个
-2的反码:11111111111111111111111111111101
-2的补码:11111111111111111111111111111110
关系操作符
> 大于
>= 大于等于
< 小于
<= 小于等于
!= 用于测试“不相等”
== "用于测试相等"
逻辑操作符
&& 逻辑与 3&&5=真=1 0&&5=假=0
|| 逻辑或 3||0=真=1 0||0=假=0
条件操作符
exp1 ? exp2 : exp3
如果a>b为真,那么max=a 否则max=b
逗号表达式
exp1,exp2,exp3,......expN
下标引用、函数调用和结构成员
[ ] ( ) . ->
auto 自动 eg: int a =10;= auto int a =10; 默认省略
break 打破循环
case switch语句中的关键字
char 字符型
const const常变量,给变量赋予常属性
continue 继续,用于循环语句
default 默认,用于switch语句
do do while 循环
double 双精度浮点型
else if语句
enum 枚举常量
extern 引入外部符号
fioat 单精度浮点型
for 循环
goto 语句
if 语句
int 整型
long 长整型
register 寄存器关键字 eg:register int a=10; //建议把a定义成寄存器变量 后续编译机器判断
计算机存储数据:寄存器、高速缓存、内存、硬盘 依次访问速度变慢,存储空间变大;CPU处理数据优先从寄存器中读取,若没有,依次读取
return 返回值
short 短整型
signed 有符号的 eg: int a = -2;就是 signed int a = -2; 默认省略 //int 定义的变量是有符号的
unsigned 无符号的
sizeof 计算数据大小
static 静态的
struct 结构体关键字
swith 语句
typedef 类型定义
union 联合体、共用体
void 无、空
volatile
while 循环
【重点介绍】
static:
修饰局部变量时,局部变量的生命周期变长。
修饰全局变量时,改变了全局变量的作用域即只能在源文件内部使用无法跨文件使用。
static修饰函数时,改变了函数的链接属性(函数本身具有外部链接属性)