C语言——操作符

一、算数操作符

1、+(加操作符)

用于将两个数相加,例:3 + 3结果为6

2、-(减操作符)

用于将两个数相减,例:3 - 3结果为0

3、*(乘操作符)

用于将两个数相乘,例:3 * 3结果为9

4、/(除操作符)

用于将两个数相除,例:3 / 3结果为1

有两种模式,整数除法和浮点数除法:

整数除法,/的两个操作数都是整数,例:1 / 3结果为0,因为为整数除法,商0余1;

浮点数除法,/的两个操作数其中有一个是浮点数,例:1.0 / 4结果为0.25。

5、%(取余操作符)

%的两个操作数必须是整数,作用是在整数除法中获取余数,例:1 % 3的结果为1

#include <stdio.h>

int main()
{
	int a = 1, b = 2;
	printf("%d\n", a + b);
	printf("%d\n", a - b);
	printf("%d\n", a * b);
	printf("%d\n", a / b);
	printf("%d\n", a % b);
	return 0;
}

6、++(自增操作符)

将操作数加一,例a = 3,则a++为4

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

(1)后置++

先赋值,后运算;先操作,后计算。

	int a = 0;
	int b = a++;//后置++,先赋值后运算
				//相当于b = a;a = a + 1
	printf("a = %d\nb = %d\n", a, b);//最终a = 1,b = 0

(2)前置++

先运算,后赋值;先计算,后操作。

	int a = 0;
	int b = ++a;//前置++,先运算后赋值
				//相当于a = a + 1;b = a
	printf("a = %d\nb = %d\n", a, b);//最终a = 1,b = 1

7、--(自减操作符)

将操作数减一,例a = 3,则a--为2

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

(1)后置--

先赋值,后运算;先操作,后计算。

	int a = 0;
	int b = a--;//后置--,先赋值后运算
				//相当于b = a;a = a - 1
	printf("a = %d\nb = %d\n", a, b);//最终a = -1,b = 0

(2)前置--

先运算,后赋值;先计算,后操作。

	int a = 0;
	int b = --a;//前置--,先运算后赋值
				//相当于a = a - 1;b = a
	printf("a = %d\nb = %d\n", a, b);//最终a = -1,b = -1

自增和自减操作符分为前置和后置,详细请看我之前的文章《C语言——自增与自减-CSDN博客》。

二、关系操作符

1、==

检查两个操作数的值是否相等,如果相等则条件为真,否则为假。

(1 == 2) 为假。

2、!=

检查两个操作数的值是否相等,如果不相等则条件为真,否则为假。

(1 != 2) 为真。

3、>

检查左操作数的值是否大于右操作数的值,如果是则条件为真,否则为假。

(1 > 2)为假

4、<

检查左操作数的值是否小于右操作数的值,如果是则条件为真,否则为假。

(1 < 2)为真

5、>=

检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真,否则为假。

(1 >= 2)为假

6、<=

检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真,否则为假。

(1 <= 2)为真

#include <stdio.h>

int main()
{
	int a = 1, b = 2;
	if (a == b)
	{
		printf("a == b ture\n");
	}
	if (a != b)
	{
		printf("a != b ture\n");
	}
	if (a > b)
	{
		printf("a > b ture\n");
	}
	if (a < b)
	{
		printf("a < b ture\n");
	}
	if (a >= b)
	{
		printf("a >= b ture\n");
	}
	if (a <= b)
	{
		printf("a <= b ture\n");
	}
	return 0;
}

结果为:

三、逻辑操作符

1、&&

称为逻辑与运算符。如果两个操作数都非零,则条件为真。

(1 && 0) 为假。

一些性质:

(1)短路性质:当运算符&&前的表达式为假(即为0)时,整个逻辑表达式的结果已经确定为假,那么编译器不会再去计算&&后面的表达式。这被称为"短路",因为后面的表达式被"短路"掉了。这样不仅可以提高效率,有时也可以用来在&&后面的表达式中避免潜在的错误(比如除0错误)。

(2)结合性:&&具有左结合性,即多个&&运算符在表达式中从左向右依次结合和计算。

例:

#include <stdio.h>

int main()
{
	int a = 0, b = 1, m = 1, n = 0;
	(m = a > b) && (n = a < b);//&&有从左向右的结合性,这里>优先级大于=,表示将a > b的值赋给m,这里a > b为假,返回0,所以m为0,但是&&有短路性质,所以后面的表达式不会进行,所以n还是0
	printf("m = %d\nn = %d\n", m, n);
	return 0;
}

2、||

称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。

(1 || 0) 为真。

(1)短路性质:如果||运算符前的表达式为真(即非0),那么整个逻辑表达式的结果已经确定为真,编译器将不会计算||后面的表达式。这被称作“短路”,因为计算过程在确定结果后就停止了,不再继续执行后面的表达式。

(2)结合性||运算符具有左结合性,这意味着在没有括号改变计算顺序的情况下,从左向右依次对表达式进行逻辑或运算。

#include <stdio.h>

int main()
{
	int a = 0, b = 1, m = 1, n = 0;
	(n = a < b) || (m = a > b);//||有从左向右的结合性,这里>优先级大于=,表示将a < b的值赋给n,这里a < b为真,返回1,所以n为1,但是||有短路性质,所以后面的表达式不会进行,所以m还是1
	printf("m = %d\nn = %d\n", m, n);
	return 0;
}

3、!

称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。

!(1 && 0) 为真。

#include <stdio.h>

int main()
{
	if (1 && 0)
	{
		printf("1 && 0 ture\n");
	}
	if (1 || 0)
	{
		printf("1 || 0 ture\n");
	}
	if (!(1 && 0))
	{
		printf("!(1 && 0) ture\n");
	}
	return 0;
}

四、位运算符

位操作符的操作对象都是二进制位。整数数据在计算机中存储是以补码的形式存储的,位操作符的操作对象是补码。

1、<<(左移操作符)

整数数据在计算机中存储是以补码的形式存储的,所以移位操作符的操作对象也是补码,相关致死可以看我之前的文章《C语言——原码,反码,补码-CSDN博客》。

左移操作符的规则:

将操作数的所有位向左移动指定的位数。左移 n 位相当于乘以 2 的 n 次方。

二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。

例1:正数左移

int a = 7;
int b = a << 1;
printf("%d\n",b);

左移操作不会不会对原来的变量造成改变。

将7左移一位,正数的原码、反码、补码是一样的

最后变成

转换为十进制为14。

例2:负数左移

	int a = -7;
	int b = a << 1;
	printf("%d\n",b);

将-7左移一位

最后变成

转化为原码

转换为十进制为-14

2、>>(右移操作符)

右移操作符相对与左移操作符有些复杂,因为它有两种移位方式:

(1)逻辑移位

右边丢弃,左边补零。

例1:正数逻辑右移

正数7

转化为十进制为3

例2、负数逻辑右移

负数-7

原码

补码

逻辑右移

变成

因为符号位为0,检测为正数,正数的补码与原码一致

转化为十进制为

(2)算数移位:

将操作数的所有位向右移动指定的位数。如果是偶数右移n位相当于除以 2 的 n 次方,如果是奇数,向下取偶后除以2的n次方。二进制右移运算符。将一个数的各二进制位全部右移若干位,左补原符号位(即正数左补 0,负数左补 1),右边丢弃。

大多数编译器使用的是算数右移。

例3:正数算数右移

正数7

右移左边补零

变为

转化为十进制为3

7向下取偶后除以2,6 / 2 = 3

例4、负数算数右移

负数-7

原码

补码

右边丢弃,左边补1

变成

符号位为1,检测为负数,转换为原码为

转化为十进制为-4

-7向下取偶后除以2,-8 / 2 = -4

3、& (按位与)AND

对两个操作数的每一位执行逻辑与操作,如果两个相应的位都为 1,则结果为 1,否则为 0。
按位与操作,按二进制位进行"与"运算。运算规则:

0&0=0;   
0&1=0;    
1&0=0;     
1&1=1;

例:3 & -7

转换为补码

进行按位与操作

因为结果为正数,结果转换为十进制为1

	int b = 3 & -7;
	printf("%d\n",b);

4、| (按位或)OR

对两个操作数的每一位执行逻辑或操作,如果两个相应的位其中有一个为1或两个都为1,则结果为1,否则为0。
按位或运算符,按二进制位进行"或"运算。运算规则:

0|0=0;   
0|1=1;   
1|0=1;    
1|1=1;

例:3 | -7

转换为补码

进行按位或操作

由于结果为负数,将结果转换为原码

结果转换为十进制为-5

	int b = 3 | -7;
	printf("%d\n",b);

5、^ (按位异或)XOR

对两个操作数的每一位执行逻辑异或操作,如果两个相应的位值相同,则结果为 0,否则为 1。
异或运算符,按二进制位进行"异或"运算。运算规则:

0^0=0;   
0^1=1;   
1^0=1;  
1^1=0;

(1)例:3 ^ -7

转换为补码

进行按位异或操作

由于结果为负数,将结果转换为原码

结果转换为十进制为-6

	int b = 3 ^ -7;
	printf("%d\n",b);

(2)异或的特点

(i)a ^ a = 0

3 ^ 3 = 0

其实任意整数自己对自己异或的结果都是0,即a ^ a = 0。

(ii)0 ^ a = a

0 ^ 3 = 3

其实0对任意整数进行异或操作结果都是此整数,即0 ^ a = a。

(iii)交换律a ^ b ^ c = b ^ a ^ c = c ^ b ^ a = a ^ c ^ b

2 ^ 3 ^ 4 =

3 ^ 2 ^ 4=

4 ^ 3 ^ 2=

2 ^ 4 ^ 3

	int a = 2 ^ 3 ^ 4;
	int b = 3 ^ 2 ^ 4;
	int c = 4 ^ 3 ^ 2;
	int d = 2 ^ 4 ^ 3;
	printf("%d %d %d %d\n",a,b,c,d);

(3)例:不创建临时变量,交换两个数

#include <stdio.h>

int main()
{
	int a = 3, b = 7;
	printf("交换之前a = %d,b = %d\n", a, b);
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("交换之后a = %d,b = %d\n", a, b);
	return 0;
}

#include <stdio.h>

int main()
{
	int a = 3, b = 7;
	printf("交换之前a = %d,b = %d\n", a, b);
	a = a ^ b;//得到a的值为3 ^ 7
	b = a ^ b;//得到b的值为3 ^ 7 ^ 7,符合交换律,交换成7 ^ 7 ^ 3,由于a ^ a = 0,所以结果为3,这时b的值为3
	a = a ^ b;//得到a的值为3 ^ 7 ^ 3,符合交换律,交换为3 ^ 3 ^ 7,由于a ^ a = 0,所以结果为7,这时a的值为7
	//完成交换
	printf("交换之后a = %d,b = %d\n", a, b);
	return 0;
}

这种方法只适用于整数,浮点数无法进行位操作。而且这种操作是用时间换空间,操作需要的算力较大,时间较长,虽然节省了空间,但是没有直接创建临时变量更好。

6、~ (按位取反)

对操作数的每一位执行逻辑取反操作,即将每一位的 0 变为 1,1 变为 0。
取反运算符,按二进制位进行"取反"运算。运算规则:

~00000001得到11111110

对整数3按位取反

进行取反操作

结果为负数,转换为原码

转换为十进制为-4

位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:

pqp & qp | qp ^ q
00000
01011
11110
10011

五、赋值操作符

简单赋值操作符

1、=

赋值操作符,简单的赋值运算符,把右边操作数的值赋给左边操作数。

a = 1;

C语言支持连续赋值,对于下面的几种赋值操作符也可以连续赋值。

	a = b = 1;

从右向左运算,将1赋值给b,将b赋值给a。

但是不建议使用,在调试是无法看到具体过程,而且可读性较低。

复合赋值操作符

2、+=

加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数。

C += A 相当于 C = C + A

3、-=

减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数。

C -= A 相当于 C = C - A

4、*=

乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数。

C *= A 相当于 C = C * A

5、/=

除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数。

C /= A 相当于 C = C / A

6、%=

求模且赋值运算符,求两个操作数的模赋值给左边操作数。

C %= A 相当于 C = C % A

7、<<=

左移且赋值运算符。

C <<= 2 等同于 C = C << 2

8、>>=

右移且赋值运算符。

C >>= 2 等同于 C = C >> 2

9、&=

按位与且赋值运算符。

C &= 2 等同于 C = C & 2

10、|=

按位或且赋值运算符。

C |= 2 等同于 C = C | 2

11、^=

按位异或且赋值运算符。

C ^= 2 等同于 C = C ^ 2

六、其他操作符

1、-(负号)

与数学上的负号作用相似。

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

2、+(正号)

与数学上的正号作用相似。

	int a = 1;
	int b = -1;
	printf("+a = %d\n+b = %d\n", +a, +b);

3、&(取地址操作符)

取出一个变量在内存中的地址。

	int a = 1;
	printf("a的地址是 %p\n", &a);

4、sizeof()

sizeof是用来计算变量(或类型)所占内存空间大小,不关注内存中的存储内容,单位是字节。

printf("%zu\n", sizeof(int));
printf("%zu\n", sizeof(float));
printf("%zu\n", sizeof(char));

sizeof输出的数据类型是size_t,格式字符串可用%zu或%zd。

在用sizeof求变量的大小时,可以不带括号,但求类型时不能不带括号。

	int i = 6;
	printf("%zu\n", sizeof i);

由此也可以证明sizeof是操作符,不是函数。

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

通过一个地址找到地址指向的变量。

int i = 0;
int* p = &i;//p为指向i的指针变量
*p = 1;//通过p指针找到i变量,对i变量操作,将1赋值给i
printf("%d", i);

6、(类型)强制转换类型

将数字或变量强制转换为一种类型。。

	int i = 6.6;

可改成

	int i = (int)6.6;

7、? : (条件操作符)三目操作符

表达式1 ? 表达式2 : 表达式3

表达式1为真时,表达式2执行,表达式3不执行,整个表达式的结果为表达式2的结果;表达式1为假时,表达式2不执行,表达式3执行,整个表达式的结果为表达式3的结果。

例:

#include <stdio.h>

int main()
{
	int a = 0, b = 1;
	int max = a > b ? a : b;
	int min = a < b ? a : b;
	printf("max = %d\nmin = %d\n", max, min);
	return 0;
}

8、exp1 , exp2, ... , expn(逗号表达式)

逗号表达式是用逗号隔开的一系列表达式,从左向右依次执行,表达式的结果是最后一个表达式的结果。

	int a = 0, b = 1,c = 0;
	int d = (a = 2, b = a + 1, c = b);
	printf("%d %d %d %d\n", a, b, c, d);

9、[](下标引用操作符)

[]的两个操作数是数组名和索引值,使用索引值和数组名可以找到这个索引对应的数据。

	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	printf("%d\n", arr[0]);//索引为0的数据为1

这里有个很好玩的,既然[]的操作数是两个,那例如3 + 2中的+是操作符,而它的操作数3和2可以交换,即3 + 2 等价于 2 + 3,那arr[0]可不可以写成0[arr]呢,答案是可以的。

	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	printf("%d\n", 0[arr]);//索引为0的数据为1

这更能证明它的操作数是两个。

10、()(函数调用操作符)

使用可以进行对函数进行调用,接收多个操作数,其中一个是函数名,其他的是传给函数的实参。

#include <stdio.h>

void Print(int x)
{
	printf("%d\n", x);
}

int main()
{
	int a = 0;
	Print(a);//这里的()就是函数调用操作符
	return 0;
}

11、. 点操作符(结构成员访问操作符)

用于直接访问结构体变量或联合体变量的成员。当你有一个结构体变量,而不是指针时,你会使用点操作符来访问其成员。

#include <stdio.h>

struct Student
{
	char name[10];
	int age;
	int high;
};
int main()
{
	struct Student z = { "张三",18,180};
	printf("姓名 %s\n年龄 %d\n身高 %d\n", z.name, z.age, z.high);
	return 0;
}

12、-> 箭头操作符(结构成员访问操作符)

用于通过结构体指针访问其成员。当你有一个指向结构体的指针而不是结构体变量本身时,你会使用箭头操作符来间接访问其成员。

#include <stdio.h>

struct Student
{
	char name[10];
	int age;
	int high;
};
int main()
{
	struct Student z = { "李四",19,190};
	struct Student* pz = &z;
	printf("姓名 %s\n年龄 %d\n身高 %d\n", pz->name ,pz->age ,pz->high);
	return 0;
}

七、操作符优先级

类别 操作符 结合性 
后缀 () [] -> . ++ - -  从左到右 
一元 + - ! ~ ++ - - (type)* & sizeof 从右到左 
乘除 * / % 从左到右 
加减 + - 从左到右 
移位 << >> 从左到右 
关系 < <= > >= 从左到右 
相等 == != 从左到右 
位与 AND 从左到右 
位异或 XOR 从左到右 
位或 OR 从左到右 
逻辑与 AND && 从左到右 
逻辑或 OR || 从左到右 
条件 ?: 从右到左 
赋值 = += -= *= /= %=>>= <<= &= ^= |= 从右到左 
逗号 从左到右 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/286545.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HashMap使用-LeetCode做题总结 454. 四数相加 II

454. 四数相加 II 最初思路优化思路Java语法增强for的使用场景 最初思路 枚举&#xff0c;因为是要计算有多少个元组&#xff0c;所以每个元素肯定都要遍历到&#xff0c;所以干脆算出所有元组的和。 我想用四个for循环加&#xff0c;但是失败。 优化思路 参考力扣 四数相加为…

创建VLAN及VLAN间通信

任务1、任务2、任务3实验背景&#xff1a; 在一家微型企业中&#xff0c;企业的办公区域分为两个房间&#xff0c;一个小房间为老板办公室&#xff0c;一个大房间为开放办公室&#xff0c;财务部和销售部的员工共同使用这个办公空间。我们需要通过VLAN的划分&#xff0c;使老板…

聊聊我使用亚马逊鲲鹏系统注册买家号的心得

想和大家聊一下我最近用了个挺好用的工具&#xff0c;就是亚马逊鲲鹏系统。以前我总是烦恼要一个一个手动注册亚马逊账号&#xff0c;真是麻烦。但有了这个系统&#xff0c;简直是方便到不行&#xff01; 首先&#xff0c;它有个全自动批量注册账号的功能&#xff0c;你只需要提…

Python爬取今日头条热门文章

前言 今日头条文章收益是没有任何门槛&#xff0c;只要是你发布文章&#xff0c;每篇文章的阅读量超过1000就能有收益&#xff0c;阅读量越多收益越高。于是乎我就有了个大胆的想法。何不利用Python爬虫&#xff0c;爬取热门文章&#xff0c;然后完成自动化发布文章呢&#xf…

77 Python开发-批量FofaSRC提取POC验证

目录 本课知识点:学习目的:演示案例:Python开发-某漏洞POC验证批量脚本Python开发-Fofa搜索结果提取采集脚本Python开发-教育SRC报告平台信息提取脚本 涉及资源: 本课知识点: Request爬虫技术&#xff0c;lxml数据提取&#xff08;把一些可以用的或者有价值的数据进行提取和保…

十二星座、社交做人守信用程度指数。

双子座&#xff08;95&#xff05; &#xff09;&#xff1b;天蝎座&#xff08;92&#xff05; &#xff09;&#xff1b;处女座&#xff08;90&#xff05; &#xff09; 金牛座&#xff08;85&#xff05; &#xff09;&#xff1b;狮子座&#xff08;85&#xff05; &#…

07. HTTP接口请求重试怎么处理?

目录 1、前言 2、实现方式 2.1、循环重试 2.2、递归重试 2.3、Spring Retry 2.4、Resilience4j 2.5、http请求网络工具内置重试方式 2.6、自定义重试工具 2.7、并发框架异步重试 2.8、消息队列 3、小结 1、前言 HTTP接口请求重试是指在请求失败时&#xff0c;再次发…

[python]matplotlib

整体图示 .ipynb 转换md时候图片不能通知携带&#xff0c;所有图片失效&#xff0c;不过直接运行代码可以执行 figure figure,axes与axis import matplotlib.pyplot as plt figplt.figure() fig2plt.subplots() fig3,axsplt.subplots(2,2) plt.show()<Figure size 640x480 …

C++模板进阶操作 ---非类型模板参数、模板的特化以及模板的分离编译

本专栏内容为&#xff1a;C学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&…

计算机网络复习1

概论 文章目录 概论计算机网络的组成功能分类性能指标&#xff08;搞清楚每个时延的具体定义&#xff09;分层结构协议、接口和服务服务的分类ISO/OSITCP/IP两者的不同 计算机网络的组成 组成部分&#xff1a;硬件&#xff0c;软件和协议&#xff08;协议&#xff1a;传输数据…

C++ stack使用、模拟实现、OJ题

目录 一、介绍 二、常用函数 三、模拟实现 四、OJ练习题 1、最小栈 2、栈的压入、弹出序列 3、逆波兰表达式(后缀转中缀) 4、中缀转后缀思路 5、用栈实现队列 一、介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除…

二叉树的前序遍历 、二叉树的最大深度、平衡二叉树、二叉树遍历【LeetCode刷题日志】

目录 一、二叉树的前序遍历 方法一&#xff1a;全局变量记录节点个数 方法二&#xff1a;传址调用记录节点个数 二、二叉树的最大深度 三、平衡二叉树 四、二叉树遍历 一、二叉树的前序遍历 方法一&#xff1a;全局变量记录节点个数 计算树的节点数: 函数TreeSize用于…

[情商-5]:用IT直男擅长的流程图阐述高情商聊天过程与直男聊天过程

目录 一、目标与主要思想的差别 二、高情商聊天与直男聊天的流程图 1. 发起谈话主题Topic 2. 分析谈话的主题和内容 3. 确定谈话目的&#xff1a;解决问题还是情绪交流 4. 倾听&#xff1a;站在自己的角度倾听、捕获、理解对方的情绪状态与情绪诉求 5. 同理心&#xff1…

探索 CodeWave低代码技术的魅力与应用

目录 前言1 低代码平台2 CodeWave简介3 CodeWave 的独特之处3.1 高保真还原交互视觉需求3.2 擅长复杂应用开发3.3 支持应用导出&独立部署3.4 金融级安全要求3.5 可集成性高3.6 可拓展性强 4 平台架构和核心功能4.1 数据模型设计4.2 页面设计4.3 逻辑设计4.4 流程设计4.5 接…

milvus学习(一)cosin距离和欧式距离

参考&#xff1a;https://blog.csdn.net/qq_36560894/article/details/115408613 归一化以后的cosin距离和欧式距离可以相互转化&#xff0c;未归一化的不可以相互转化&#xff08;因为距离带单位&#xff09;。

IO DAY2

#include<my_head.h> //定义注册函数*************************************************** int do_register() { //以追加的形式打开文件 FILE *wfp 0; char name[20]; char pwd[20]; printf("请输入注册账号&#xff1a;"); fgets(…

VMware15安装Linux,CentOS-7x86_64

最近面试遇到很多Linux&#xff0c;咱就是实在糊弄不过去了&#xff0c;学一下吧 下载网站&#xff0c;官网&#xff1a;https://www.centos.org/download/ 第一步&#xff1a;点击x86_64 第二步&#xff1a;随便选个国内源&#xff0c;我选的清华 第三步&#xff1a;等待下…

【LeetCode每日一题】466. 统计重复个数

2024-1-2 文章目录 [466. 统计重复个数](https://leetcode.cn/problems/count-the-repetitions/)思路&#xff1a; 466. 统计重复个数 思路&#xff1a; ​ s1表示要重复的序列。n1表示要重复s1的次数。 ​ s2表示要判断的子序列。n2表示子序列s2在整个序列中重复的次数。返回…

基于微信小程序的停车预约系统设计与实现

基于微信小程序的停车预约系统设计与实现 项目概述 本项目旨在结合微信小程序、后台Spring Boot和MySQL数据库&#xff0c;打造一套高效便捷的停车预约系统。用户通过微信小程序进行注册、登录、预约停车位等操作&#xff0c;而管理员和超级管理员则可通过后台管理系统对停车…

2024 年政府和技术预测

新的一年即将来临&#xff0c;这意味着专家、技术专家和专栏作家应该尝试预测 2024 年政府和技术即将出现的一些最大趋势。今年可能使这些预测变得更加困难的是事实上&#xff0c;许多技术正在以惊人的速度向前发展。在某些情况下&#xff0c;过去需要多年才能慢慢发生的变化现…