#2023.3.27
一,数据类型
char //字符数据类型
short //短整型
int //整形
long //长整型
float //单精度浮点型 “%f”
double //双精度浮点型 %lf”
char ch=’A’
printf(“%c\n”,ch); //以字符的形式打印ch
//%d 打印整型十进制数据
// short int 短整型
//Char-字符类型
//%d-打印整型
//%c-打印字符
//%s打印字符串
//%f-打印浮点数字-打小数
//%p-以地址的形式打印
//%x-打印16进制数字
//%o-打印8进制数
float fufu=5.0;
printf(“%f”);
double fufu=3.14;
printf(“%lf”);
所占内存大小不一样
字节
二,字节 计算机中的单位
Bit 比特位
Byte-字节 1个byte=8个bit位
Kb 1kb=1024byte
Mb 1024
Gb 1024
Tb
pb
2进制 0 1 逢二进一
010=0*2^0+0*2^1+0*2^0=2
8进制 0 1 2 3 4 5 6 7
10进制 0 1 2 3 4 5 6 7 8 9 逢十进一
Eg:Short age=20;//向内存申请2个字节16比特,用来存放20
三,变量的分类
局部变量(名字相同时优先)and全局变量
#include<stdio.h>
int fufuu = 400; //全局变量
int main(void)
{
int fufu = 120;//局部变量
return 0;
}
//&是取地址符号
{
int number_1 = 0;
{
printf("number_1=%d\n",number_1 );
}
return 0;
}
作用域:限定名字可用性的代码范围
四,常量
1,Const – 修饰的常变量 -常属性 放到前面固定值
const int n =120;//n是变量又有常属性,所以n为常变量
Int arr[10]={0};创建数组
2,#define 定义的标识符常量
#define MAX 10 【打印出来是10】
int main(void)
{
int arr[MAX] = { 0 };
printf("%d\n", MAX);
return 0;
}
3,枚举常量
枚举是可以一一列举的 ,枚举常量不可改
枚举关键-enum
- 枚举性别
enum Sex
{
MALE,
FEMALE,
SECRET
};
int main(void)
{
printf("%d\n",MALE);
printf("%d\n",FEMALE);
printf("%d\n",SECRET);
return 0;
}
- 枚举颜色
enum Color
{
RED,
YELLOW,
BLUE
};
int main(void)
{
enum Color color = BLUE;
return 0;
}
4,字面常量
30;3.14;
五,字符串
“由双引号引起的东西”
打印字符串用%s,%c是打印单个字符
注:字符串的结束标志是一个\0的转义字符,不算作字符串内容
转义字符:转变原来的意思
1.#include<stdio.h>
int main(void)
{
char arr1[] = "abc";
//"abc"--'a''b''c''\0'---\0是字符串的结束标志
char arr2[] = { 'a','b','c' , ‘\0’};
//‘a’=97,‘A’=65----------ASCII码
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
2.#include<stdio.h> 【打印出来第一个是3,第二个是随机值】
int main(void)
{
char arr1[ ] = "abc";
char arr2[ ] = { 'a','b','c' };
printf("%d\n", strlen(arr1));
//strlen-string length-计算字符串长度的
printf("%d\n", strlen(arr2));
return 0;
}
计算机上是以二进制存储数据
\t是水平制表符号
#2023.3.29
六,转义字符
#include<stdio.h> 【打印出来是 est】
int main(void) 要使打印正常 \\t
{ 则多加一个斜杠
printf("\test\t");
return 0;
}
//用于表示一个反斜杠,防止被解释为一个转义字符
printf("%c\n",'\'');
printf("%s\n"," \" ");
//strlen-string length-计算字符串长度的
#include<string.h>
Printf(“%d\n”,strlen(“c:\text\32\text.c”));
C : \t e x t \32 \t e x t . c 【13个】
\32作为8进制代表的那个十进制数字,作为ASCII码值,对应的字符
//32—十进制转换3*8^1+2*8^0=24+2=26—作为ASCII码值代表的字符
\ddd表示1~3个八进制的数字
printf("%c", '\132');
//132—1*8^2+3*8^1+2*8^0=64+24+2=90
\xdd表示2个十六进制数字
printf("%c", '\x61'); 【是一个字符】
//61—6*16^1+1*16^0=97
#include<stdio.h>
int main(void)
{
int input = 0;
printf("懿酱你来接我吗?(1/0)>:");
scanf_s("%d",&input);
if (input == 1) //两个等号来判断相等不相等
printf("好,来接你。");
else
printf("……");
return 0;
}
#2023.3.30
七.C语言中如何实现循环?
- while语句
#include<stdio.h>
int main(void)
{
int line = 0;
while (line < 20000)
{
printf("懿酱:%d\n",line);
line++;
}
if (line >= 20000)
printf("酱酱酱\n");
return 0;
}
- for语句
3.do……while语句
八.Add函数相加
F(x,y)=x+y;
Add
int Add(int x, int y)
{
int z = x + y;
return z;
}
int main(void)
{
int num1 = 10;
int num2 = 20;
int sum = 0;
int fufu = 100;
int didi = 200;
sum = Add(num1, num2);
printf("sum=%d\n",sum);
}
1,函数:分为库函数和自定义函数
2,数组:一组相同类型元素的集合
数组的定义:
Int arr[10]={1,2,3,4,5,6,7,8,9,10};
数组的下标 0 1 2 3 4 5 6 7 8 9
打印一个元素printf("%d\n", arr[4]); 【打印出来是5】
打印一组元素int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%d\n", arr[4]);
int i = 0;
while (i < 10)
{
printf("%d\n",arr[i]);
i++;
}
//用下标的方式访问元素
//定义一个整型数组,最多放10个元素
Char ch[20];
Float arr2[5];
九,操作符
1.取模操作符:%
2.移(2进制)位操作符:《 左移
》右移
Int fufu=1;
0000000000001
a《1;//a向左移动一位【左边丢弃,右边补零
全部拿起来向左移
0000000000010
//整型1占4个字节—32个比特位
int main(void)
{
int fyfy = 1;
int fifi = fyfy << 1;
printf("%d\n", fifi);
return 0 ;
}
3.(二进制)位操作 0为假,非0为真。
& 按位与 - 上下同真则真
| 按位或 有1就是1
^ 按位异或 对应的二进制位相同则为0
相异为1.
二进制:1 1 1 1
1*2^3+1*2^2+1*2^1+1*2^0
8 4 2 1
int main(void)
{
int a = 3; //011
int b = 5; //101
int c = a & b; //001
printf("%d", c);
return 0 ;
}
int main(void)
{
int a = 3; //011
int b = 5; //101
int c = a |b; //111
printf("%d", c);
return 0 ;
}
int main(void)
{
int a = 3; //011
int b = 5; //101
int c = a ^ b; //110
printf("%d", c);
return 0 ;
}
- (复合)赋值操作符
= += -= *= /= &= ^= |= >>= <<=
= 是赋值,== 是判断相等
a = a+10;和a +=10;相等等价
a =a-2
- 单目操作符:1,! 逻辑反操作(真变假假变真)
int main(void) 【打印出来a为10,!a为0
{
int a = 10;
printf("%d\n", a);
printf("%d\n", !a);
return 0 ;
}
2 . -负值 int a = -10;
3.+ 正值
4.& 取地址
5.sizeof 操作数的类型长度(字节为单位)
计算变量或类型所占空间大小
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(int));
int arr[10] = { 0 };
printf("%d\n", sizeof (arr));
//int main(void)
{
int arr[10] = { 0 };
int sz = 0;
//计算数组的元素大小
//计算数组元素个数=数组总大小/第一个元素的大小0
sz = sizeof(arr) / sizeof(arr[0]);
printf("%d\n",sz);
return 0 ;
int main(void)
{
int a = 10;
int arr[] = { 1,2,3,4,5,6 };
printf("%d\n", sizeof(a)); //4
printf("%d\n", sizeof(int));
return 0 ;
}
#2023.4.2 6.--
int a = 10; //【a=9,b=10】
int b = a--;//后置--, 先使用,再--
printf("a=%d b=%d\n", a, b);
int a = 10; //【a=9,b=9】
int b = --a;//前置--,先--,再使用
printf("a=%d b=%d\n", a, b);
7.++
int a = 10; //【a = 11,b = 10】
int b = a++;//后置++:先使用,再自增++
int c = ++a;//前置++:先++,再使用
printf("a=%d b=%d c=%d\n", a, b,c);
8.~ 对一个数的二进制按位取反
int fufu = 0;//4个字节32个bit位。32个0
int didi = ~fufu;//didi是有符号的整型
printf("%d\n", didi);//使用的打印的是这个数的原码
//~ 按位取反:1变0,0变1 0101>1010
//原码(符号不变,按位取反)——反码(加1)——补码
直接按照正负写出的二进制序列
//补码减1得到反码,反码按位取反得到原码
// 111111111111111111(补码
// 111111111111111110(反码
// 000000000000000001(原码
//最高位是符号位
//负数在内存中存储的是二进制补码
//0开头的是正数,1开头的是负数【0正1负】
//只要是整数,内存中存储的都是二进制的补码
//正数的原码,反码,补码 相同
//负数存补码
9.*
10.(类型) 强制类型转换
int a = (int)3.14; //3.14是double类型的,
//要强制转换成int就在前面加()
- 双目操作符:+
//EOF—end of file—文件结束标志
‘\q’是转义字符吗?
数组如果初始化,可以不指定数组的大小。
求两个数的较大值:
第一种int main(void)
{
int num1 = 10;
int num2 = 20;
if (num1 > num2)
printf("较大值是:%d", num1);
else
printf("较大值是:%d", num2);
return 0 ;
}
第二种#include<stdio.h>
int Max(int x, int y)
{
if (x > y)
return x;
else
return y;
}
int main(void)
{
int num1 = 10;
int num2 = 20;
int max = 0;
max = Max(num1, num2);
printf("max=%d\n", max);
return 0 ;
}
#2023.4.2
- 关系操作符
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
8.逻辑操作符
&& 逻辑与(并且) 同真则真看&&左右的真假
#include<stdio.h> 【打印出c=1】
int main(void)
{
int a = 3;
int b = 5;
int c = a && b;
printf("c=%d\n", c);
return 0;
}
|| 逻辑或 有真就是真
int a = 3; 【打印出c为1】
int b = 0;
int c = a ||b;
printf("c=%d\n", c);
- 条件操作符(三目操作符)
exp1 ? exp2 : exp3 //exp是表达式
exp1为真,则执行exp2,否则执行exp3
int a = 30;
int b = 20;
int max = 0;
max = (a > b ? a : b);//如果a>b为真,则执行a,否则执行b
//三目操作符
printf("max=%d\n", max);
8.逗号表达式
逗号可隔开表达式exp1,exp2,exp3,……
9.下标引用[ ],函数调用( ),结构成员
. -> & *
int arr[10] = {0};
arr[4];//[]--下标引用操作符
int a = 10;
int b = 20;
int sum =Add(a,b);//()--函数调用操作符