C语言学习
1/26
常识
-
//单行注释,加*号可为多行注释
-
main():主函数,一个项目只允许有一个主函数
-
stdio.h标准输入输出库
-
void:空
-
return:返回值
-
include:包含,导入
-
不要用中文
-
编译器和编辑器都要有
关键字
分类 | 关键字 |
---|---|
非常见 | auto、register、volatile、goto |
存储相关 | const、extem、 |
进制的转换
内存容量的单位
1TB=1024GB
1GB=1024MB
1MB=1024KB
1KB=1024B(B=byte字节)
1B=8bit
进位 | 权 | 应用 | 表示 |
---|---|---|---|
二进制 | 2 | 电脑存储 | B |
八进制 | 8 | O | |
十进制 | 10 | 日常计算 | D |
十六进制 | 16 | H | |
原码、反码、补码
- 正数的原码、反码、补码都是一样的
- 符号位:最高位,1表示负数,0表示正数
- 反码:在原码的基础上‘‘符号位保持不变,数值取反’’
- 补码:在反码的基础上‘‘符号位不变,数值取反’’
1/27
变量(值可以变化的量,需要存储,但是需要实时变化)
- 变量名以数字,字母,下划线构成
- 第一个不能是数字
- 不能是关键字,预定义
- 区分大小写
类型 | 表示 |
---|---|
整型 | int,signed int/int占据4个字节(32位),unsigned int,short int占据2个字节,long int占据4字节 |
字符型 | char,占据一个字节(8位),signed char有符号位(可直接写char),unsigned char无符号(不能省略) |
浮点型 | float单精度,占据4字节。double双精度,占据8字节。long double占据8字节或16字节,sizeof函数可查字节数 |
1/28
变量的定义和使用
//类型名 变量名,变量名,变量名;
//类型名 变量名=初值,变量名=初值;
char a,b,c;
int e;
char a=0,b=1,c=3;
unsigned char e=3;
int height=170;
int weight=0;
输出
int a,b;
a=100;
b=20;
printf('%d\n,%d',a,b);//顺序对应
高级输出
char a,b;//养成赋初值的习惯
a=45;//赋值
b=a;
printf('a:%d,b:%d\n',a,b);//引号里面有什么输出什么,%d用来匹配字符
溢出
//例子
char height=0;
height=170;
printf('%d\n',height);
//输出不是170,溢出,因为char只有一个字节,可以改为int类型,或者unsigned char
运算符与表达式
运算符
//+ - * / %
//表达式:操作数和运算符组成,单个字符可理解为表达式
//只要有一个对象是浮点型结果就是浮点型,两个整数得到整数
//“%d”整型匹配
//"%f"浮点型匹配
//\n换行
//求余运算符要求两个必须为整数,且运算结果的符号取决于被除数
//自增和自减运算符(单目运算符,从右往左)
a=20
printf('%d\n',a++)//先读再加,也就是先输出a再加1
printf('%d\n',a)
//输出20,21
//++在前,先写后读
printf('%d\n',++a)//先加1再输出
2/8
优先级与结合性
//单目运算符优先于双目运算符
//逻辑运算符低
//赋值最低
关系运算符
//< > == >= <= !=
返回1为真,0为假
逻辑运算符
//与运算 &&
//或运算 |
//非运算
短路特性,逻辑前面不成立,后面不会执行
非运算符最高
赋值运算符
// =
// -=
// +=
// *=
// /= 先运算后赋值
强制类型转换
//语法格式
(类型)(表达式)
float c=0 d=0;
c=(int)7.5/2;
d=int(7.5*3);
printf('%d\n%d',c,d);
//不加括号转换最近的那个
//不同数据类型相互转换时向高精度多字节转换
运算结构
顺序结构
从前往后,从上往下
复合结构由大括号括起来声明语句
if选择语句
if (条件表达式)
语句1
//条件表达式为真则执行语句
//语句不用大括号括起来只能跟一条语句
//输入
int a,b,max;
printf('请输入a和b的值:');
scanf('%d%d',&a,&b);
max=a;
if(max<b)
max=b;
printf('max:%d\n',max);
return 0;
//判断为奇数
#include <stdio.h>
int main(void)
{
int a=0;
printf('请输入a的值:');
scanf('%d\n',&a);
if (a%2 != 0)
{
printf('%d是奇数',a);
}
printf('******\n')
return 0;
}
//if else语句
#include <stdio.h>
int main()
{
int a=0;
printf('请输入a:');
scanf('%d',&a);
if (a%2 == 0)
{
printf('%d是偶数',a);
}
else
{
printf('%d是奇数',a);
}
printf('*******\n');
return 0;
}
记得使用双引号
//if else if
#include <stdio.h>
int main()
{
//分数等级
int score=0;
printf("请输入成绩:");
scanf("%d",&score);
if (score>=90)
{
printf("%d属于A等级",score);
}
else if (score>=75)
{
printf("%d属于B等级",score);
}
else if (score>=60)
{
printf("%d属于C等级",score);
}
else
{
printf("%d不及格",score);
}
return 0;
}
switch多路分支语句
switch(表达式)
{
case 常量表达式1:语句1(集合);
case 常量表达式2:语句2(集合);
……
case 常量表达式n:语句n(集合);
default:语句n+1;
}