算术操作符(+,-,*,/,%)
-
除了%操作符之外,其他几个操作符可以用于整数和浮点数。
-
对于/操作符如果两个操作数都为整数,执行整数除法,而只要有浮点数,执行的就是浮点数除法。
-
%操作符的两个操作数必须为整数,返回的是整数之后的余数。
移位操作符(左移<<,右移>>)
-
只作用于整数
-
移动的都是二进制的位置
1. 算术右移:右边丢弃,左边补原符号位**(二进制最左边为0是正数,是1为负数)
2. 逻辑右移:右边丢弃,左边补0**
3. 左移:左边丢弃,右边补0**
位操作符(&,|,^,~)
- 他们操作的必须是整数
- 以二进制运算
&:按位与:都为1结果为1,否则为0
|:按位或:有1结果为1,都为0结果为0
^:按位异或:对应的二进制位相同为0,相异为1
~:按位取反(单个数进行运算):为0的数为1,为1的数为0
异或面试题:(不能创建临时变量(第三个变量),实现两个数的交换)
示例:
#include<stdio.h>
int main()
{
int a = 3;
int b = 5;
a = a ^ b;
b = a ^ b;
a = b ^ a;
printf("a=%d b=%d\n", a, b);
return 0;
}
示例结果:a=5 b=3
例题:(计算一个数二进制有几个1)
#include<stdio.h>
int main()
{
int num;
int count = 0;
scanf("%d", &num);
for (int i = 0; i < 32; i++)
{
if ((num >> i) & 1)
count++;
}
printf("%d\n", count);
return 0;
}
++&&--
- 前置++(--):先加加(减减),在使用
- 后置++(--):先使用,在加加(减减)
360笔试题:
#include<stdio.h>
int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ && ++b && d++;//一个为假都为假,后面则不再进行判断
printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
return 0;
}
结果:a = 1 b = 2 c = 3 d = 4
#include<stdio.h>
int main()
{
int i = 0, a = 1, b = 2, c = 3, d = 4;
i = a++ || ++b || d++;//一个为真都为真,后面则不在判断
printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
return 0;
}
结果:a = 2 b = 2 c = 3 d = 4
逗号表达式(,)
- 从左至右依次进行,结果为最后一个表达式的结果
示例:
#include<stdio.h>
int main()
{
int a = 1;
int b = 3;
int c = 0;
c = (a>b,a = a+b,a,b = a+b);
printf("c=%d\n", c);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探