当前位置: 首页 > news >正文

运算符,条件判断,循环

一.数学计算:

1.加法 +

整数,浮点,字符类型(可以按照ASCII码进行)

操作中有一个是浮点,结果就是浮点

涉及多个不同数据类型的算术运算时,编译器会按照特定规则将数据转换为相同的类型,"较低"级别的类型->"较高"级别类型--以避免数据丢失

char(8位)<short int(16位)<int(32位)<longlong(64位)

signed<unsigned

int<float<double(注意数据丢失)

int 2*float 3.14 =float 6.28

2.减法 -

同上

3.乘法 *

同上

4.除法 /

整数相除,结果依旧是整数,舍弃小数

例 int a =10 ;int b =3 float c =a/b (=3)

int a =10 ;int b =3 float c =(float)a/b (=3.33)强制转换小数

除数不能为0,为0报错

5.取余

仅用整数类型,不能用浮点型

取余的余数的符号和被除数一致,也就是左边的

作用:判断奇偶,对2取余

循环中的记数

运算符

自增:++(前置后置)

int i=10

printf("%d\n",++i)前置自增,输出11

printf("%d\n",i++)后置自增,输出11,然后i变成12

int x =5

int y = x++ + ++x 先返回x,在加1,+ 先加1,在返回x

y = 5+7

二.逻辑判断:判断真假

1.关系运算符:

2.逻辑运算符:

逻辑与&& 且

例:1001&&0010:9&&2 =1 ,为真,都不是0

逻辑或|| 或

逻辑非!

3.短路求值:当第一个条件确定最终结果时,后面的条件不被计算

a&&b a已经错了,不用看b

三.位运算:

1.按位与&(对应位都为1时,结果为1,否则为0)

例:1001&0010 0000 9&2=0

用作:清零某些位,掩码,检查某一位是否为1

0xFFFF0000是一个32位十六进制数

高16位:1111 1111 1111 11110xFFFF

低16位:0000 0000 0000 00000x0000

int a = 0x12345678

printf("%x\n",a)

2.按位或|(对应为中至少有一个为1,结果为1)

作用:设置特定位(多少位为1)

例:1001|0010 1011 9|2=0

a= 6;b=3; r = a|b =7

0110 0011 0111

3.按位异或:^(1,0不一样就是1,一样就是0)

作用:翻转和交换操作

例:1001^0010 1011

int a=6; //0110

int b=7; //0111

a = a^b; //0001

b = a^b;

a = a^b;

printf("%d %d\n", a, b);

4.取反 ~(每一位取反 0变1,1变0)

char a = 9

作用:电频翻转,生成补码,常见于计算负数

例:00001001取反11110110

int a =6

a = ~a+1 a的结果为-6

0000 0110 ->取反(补码)11111001 +1-> 11111010 有符号的整数通常补码存储,1为-,补码00000101,补码加1 00000110 加上符号,就为-6

5.左移 <<(将操作数的位左移指定的次数,右侧用0补齐,左移相当于乘以2的幂次

作用:快速乘以2的幂,性能敏感程序

n<<1 == n*2

char a =9 00001001

例:a<< 1 00010010

a<< 2 00100100

6.右移 >>(相当于除以2的幂,无符号数补0,有符号数补符号位,这里的补,指的是移动后,需要补的数)

例:1001>>0010

-1 二进制 1111 1->0001->补码(取反)1110->+1->1111

十六进制 0xFF 1111->F

7.优先级和结合性

位运算符的优先级相比于其他运算符较(算术),但高于逻辑运算符

第2位设置为1:

int n =5 (0100) ;n = n|(1<<1);

第二位清除为0:

int n=7(0111); n=n&~(1<<1);

检查 第三位是否为1:

int n=5;//0101

if(n&(1<<2)){printf(“是1”)}else{printf("是0")}

四.条件判断

1.if(){}

2.if(){}else{}

3.if(){} else if(){} else{} 当一个条件成立后,后续将不会在检查

1.上面可用范围判断,数值,布尔,switch不行,只能整数,字符,枚举

2.有大量分支时,swich效率更高,看起来简洁一些,if else效率低

3.if else不需要break,

4.else处理默认情况,default处理没有匹配的情况

4.枚举,固定值

switch(expression){

case value 1:

//当expression等于value1时执行

break;

case value 2:

//当expression等于value2时执行

break;

default:

//没有匹配的,就执行这个

}

fall through现象,当某一个分支没有出现break时,就会继续向下执行,如果一直没有遇到break,则执行后面全部代码

五.循环

1.循环结构和作用

简化代码,减少重复,重复任务时,可以高效简洁:

自动化重复任务:遍历数组,打印序列

动态控制执行次数:

提高程序效率

便于处理集合数据

灵活的控制流

2.for 循环

for(初始化;条件;迭代 ){循环体}

for(i = 0;i<5;i++){printf("i=%d/n",i);}

初始化和迭代可以没有,循环体中需要有

3.嵌套for循环

遍历数组,循环

4.for循环遇到break,循环会立即终止,跳转到该循环外

continue 遇到continue时,不执行continue后面的语句,直接又进行下一次循环

5.常见问题

1.无限循环

2.循环变量范围错误

3.修改循环变量

6.while循环

while(条件表达式){循环体}

int i= 0;

while(i<5)

{printf("i=%d/n",i);

i++;

}

适合不限循环(不确定某状态)次数的条件判断

例子:当一个传感器的状态是开启时,就执行,不是开启,就不执行,接收数据也可以

while(1){} 这个1表示永远为真

还可以将表达式改成函数

while:不限次数用,for:对次数有要求用

7.do while

先执行一次循环体,无论是否为真,都会执行一次

检查条件:在第一次执行循环体后,才会检查while中的条件

循环结束或继续:如果条件为真,继续执行循环体,如果为假,跳出

区别,一个先做一遍,在判断

一个先判断,在做

do{printf(“打印”);i++}while(i<=5);

适合菜单,先展示菜单,用户反复操作菜单,知道用户选择退出

\t是美化字段

http://www.jsqmd.com/news/631955/

相关文章:

  • 计算机中级-数据库系统工程师-数据库技术基础(1)
  • ret2libc1
  • vLLM-v0.17.1配置指南:如何启用Prefix Caching加速重复请求
  • 告别RDMA的复杂,用Xilinx CMAC在FPGA上实现100G UDP协议栈(附512位宽封包要点)
  • 万象奥科RK3506官方SDK内置LVGL移植 Gui Guider程序
  • VescUart库详解:嵌入式VESC UART通信协议与实时控制实践
  • 传送带撕裂检测数据集1263张VOC+YOLO
  • kafka Epoch机制
  • 英雄联盟玩家必备:LeagueAkari工具包深度解析与实战应用指南
  • FreeRTOS 线程本地存储(TLS)实战指南:从原理到应用
  • 从钓鱼邮件到Web后门:一次完整的攻击链流量分析复盘(基于BUUCTF案例)
  • C语言入门:代码例子讲透程序结构
  • Qwen3-ASR-1.7B开源大模型教程:PyTorch 2.5.0 + CUDA 12.4环境配置
  • QKeyMapper终极指南:5步掌握Windows按键自定义,提升操作效率300%
  • 全球海洋漂流浮标数据
  • LLM评估自动化不是写脚本,而是重构MLOps基建:17个生产级Checklist,含GPT-4/LLaMA-3实测基准
  • openclaw平替之nanobot源码解析(七):Gateway与多渠道集成汹
  • 编程基础(python)
  • HagiCode Skill 系统技术解析:如何打造可扩展的 AI 技能管理平台谠
  • GlobalMapper地形对比与方量计算实战:从两期数据到填挖方区域精准提取
  • WiFiPixels:ESP32上轻量级Wi-Fi控制NeoPixel的固件框架
  • 2026山东大学软件学院项目实训(二)——用户模块
  • LVGL嵌入式GUI开发:轻量级框架原理与硬件适配实战
  • 手把手教你用Qwen-Image-Edit-2511:小白也能玩的AI换装神器
  • HPH构造 一看就懂
  • 周报4.12
  • RAG工程化实践教程(非常详细),问题优化从入门到精通,看这一篇就够了!
  • 浏览器自动化六大技术路线深度对比:从模拟点击到 Chrome 扩展注入允
  • VibeVoice ComfyUI:解锁微软语音合成在AI内容创作中的无限可能
  • 《为什么只有镜像视界能做三维空间智能体?》——空间智能时代的技术门槛与体系壁垒解析