C语言基础08:运算符+流程控制总结

运算符

算术运算符

结果:数值

+、-、*、\、%、+(正)、-(负)、++、--

i++和++i

相同点:i自身都会增1

不同点:它们运算的最终结果是不同的。i++:先使用,后计算;++i:先计算,后使用

举例:

//i++
int a = 1;
int b = a++;//运算数在前,先将a的值赋值给b,然后运算数a在进行计算
printf("a=%d,b=%d\n",a,b);// a=2,b=1//++i
int x = 1;
int y = ++x; //运算数在后,先计算运算数x的值,然后将计算后的运算数x的值赋值给y
printf("x=%d,y=%d\n",x,y);  //x=2;y=2
赋值运算符

结果:赋值后的变量的值

赋值顺序:由右到左

=、+=、-=、*=、/=、%=

举例:

int i = 0;// 将右侧的常量0赋值给左侧的变量i
int sum = 0;
sum += i;//等价于sum=sum+i
sum *= i;//等级于sum=sum*i
关系运算符

表达式=运算符+运算数

关系表达式=关系运算符+运算数

结果:布尔类型(默认结果:0代表假,非0代表真;引入stdbool.h文件,false代表假,true代表真)

举例:

#include <stdbool.h>bool is_flag = true;//引入stdbool.h的真int is_flag2 = 1;//默认的真

>、<、>=、<=、==、!=

注意:

​ 两个浮点型数据进行比较的时候,不能使用==。因为比较出来的结果是不确定的,解决方案:参与比较的两个操作数相减,跟0比较,举例:

float a = 22.1,b = 22.1;
a - b == 0;// a == b
a - b > 0 ;// a > b
a - b < 0 ;// a < b
逻辑运算符

结果:布尔类型

&&、||、!

&&:运算符左右两侧表达式都成立,则结果为真;有一个不成立,则结果为假。

||:运算符左右两侧表达式都不成立,则结果为假;有一个成立,则结果为真。

! :对原操作数或者表达式结果取反,如果原操作数或者表达式结果为真,则最终结果为假;反之最终结果为真。

在这里插入图片描述

偶数:!(a % 2 == 0) 取反之后变奇数
奇数:!(a % 2 != 0) 取反之后变偶数

惰性运算

惰性计算的目的是减少运算的次数。从而提供运算效率。

短路与:如果&&左侧表达式返回假,就不再执行右侧表达式,最终返回的结果就是左侧表达式的结果(假)

短路或:如果||左侧表达式返回真,就不再执行右侧表达式,最终返回的结果就是左侧表达式的结果(真)

逗号运算符

结果:最后一个表达式的结果

语法: 表达式1,表达式2,...表达式n

位运算

所谓的位运算,就是计算机底层直接针对二进制位进行操作

~、&、|、^、<<、>>

~ :按位取反,单目运算符,针对二进制位,每一位进行取反,如果二进制位0变1,1变0。

& :按位与,双目运算符,两个数相同二进制位,如果都为1,结果为1;否则结果为0;

| : 按位或,双目运算符,两个数相同二进制位,有一个为1,结果为1;否则结果为0;

^ :按位异或:双目运算符,两个数相同二进制位,如果相同,结果为0;否则为结果1;

<< :左移:分为无符号左移和有符号左移,所有二进制位从低位到高位依次左移,超出部分舍弃,缺失部分使用0补齐。举例:5 << 6,快捷公式:, 5 ∗ 2 6 5 * 2^6 526,但是有符号数高位都是1的时候,快捷公式就不适用。

>>:右移:分为无符号右移和有符号右移,所有二进制位从高位到低位依次右移,超出部分舍弃,确实部分分情况:

① 无符号右移:直接补0

② 有符号右移:算术右移(补1,默认),逻辑右移(补0),这个由计算机系统决定

扩展:

char a; // -128~127 占1字节

unsigned char b; // 0~255 占1字节

char 有符号:

1 1111111 ~ 1 0000000 负数+0 -0 -128~0

0 1111111 ~ 0 0000000 正数+0 +0 127~0

char 无符号:

00000000 ~ 11111111 正数+0 0 ~ 255

流程控制

程序 = 算法 + 数据结构

算法:操作的步骤

数据结构:数据的描述

流程控制三大基本结构

① 顺序结构:默认

② 分支结构:(条件结构、选择结构)根据条件选择性执行,又被分为:单分支(单路分支)、双分支(双路分支)、多分支(多路分支)

③ 循环结构:(重复结构)根据条件重复执行,又被分为:当型循环(先判断,后执行)、直到型循环(先执行,后判断)

扩展:进制转换

进制转换

我们目前接触到的进制有 二进制、八进制、十进制、十六进制

  • 其他进制 转 十进制:

    按权相加

    1. (1234)10 = 4 * 10^0 + 3 * 10^1+2 * 10^2 + 1 * 10^3

    2. (0x1234)16 = 4 * 16^0 + 3 * 16^1 + 2 * 16^2 +1 * 16^3

  • 十进制 转 其他进制:

    辗转相除法:将需要转换的数据不停的除以转换的进制数,直到商为0

    ① 十进制转二进制:

② 十进制转八进制:

  • 八进制转十六进制:

    借助于二进制,将八进制转换为二进制,将二进制转换为十六进制。

  • 十六进制转八进制:

    借助于二进制,将十六进制转换为二进制,将二进制转换为八进制。

    0xA9F = 1010 1001 1111 (二进制) = 101 010 011 111 (二进制) = 0 5 2 3 7

    分(二进制) 合(八进制)

    0xE139A = 0B1110 0001 0011 1001 1010 = 011 100 001 001 110 011 010 = 03411632

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node.js开发属于自己的npm包(发布到npm官网)

在 Node.js 中开发并发布自己的 npm 包是一个非常好的练习&#xff0c;可以帮助我们更好地理解模块化编程和包管理工具&#xff0c;本篇文章主要阐述如何使用nodejs开发一个属于自己的npm包&#xff0c;并且将其发布在npm官网。在开始之前确保已经安装了 Node.js 和 npm。可以在…

如何在RTACAR中配置IP多播(IP Multicast)

一、什么是IP多播 IP多播&#xff08;IP Multicast&#xff09;是一种允许数据包从单一源地址发送到多个目标地址的技术&#xff0c;是一种高效的数据传输方式。 多播地址是专门用于多播通信的IP地址&#xff0c;范围从 224.0.0.0到239.255.255.255 与单播IP地址不同&#x…

12.翻转、对称二叉树,二叉树的深度

反转二叉树 递归写法 很简单 class Solution { public:TreeNode* invertTree(TreeNode* root) {if(rootnullptr)return root;TreeNode* tmp;tmproot->left;root->leftroot->right;root->righttmp;invertTree(root->left);invertTree(root->right);return …

网络安全行业的冬天

冬天已经来了&#xff0c;春天还会远吗&#xff1f;2022年10月28日&#xff0c;各个安全大厂相继发布了财报&#xff0c;纵观2022年前三季度9个月&#xff0c;三六零亏了19亿&#xff0c;奇安信亏了11亿&#xff0c;深信服亏了6亿&#xff0c;天融信亏了4亿&#xff0c;安恒亏了…

MYSQL索引与视图

一、新建数据库 mysql> create database mydb15_indexstu; mysql> use mydb15_indexstu; 二、新建表 &#xff08;1&#xff09;学生表Student mysql> create table Student(-> Sno int primary key auto_increment,-> Sname varchar(30) not null unique,-…

深度优先搜索(DFS)——八皇后问题与全排列问题

&#xff08; ^ _ ^ &#xff09; 数据结构好难哇&#xff08;哭 1.BFS和DFS 数据结构空间性质DFSstackO(h)不具有最短性质BFSqueueO(2^h)具有最短路性质 空间上DFS占优势&#xff0c;但是BFS具有最短性 &#xff08;若所有权重都是1&#xff0c;则BFS一定最短&#xff09;&…

Flink 内存模型各部分大小计算公式

Flink 的运行平台 如果 Flink 是运行在 yarn 或者 standalone 模式的话&#xff0c;其实都是运行在 JVM 的基础上的&#xff0c;所以首先 Flink 组件运行所需要给 JVM 本身要耗费的内存大小。无论是 JobManager 或者 TaskManager &#xff0c;他们 JVM 内存的大小都是一样的&a…

Vue07

一、Vuex 概述 目标&#xff1a;明确Vuex是什么&#xff0c;应用场景以及优势 1.是什么 Vuex 是一个 Vue 的 状态管理工具&#xff0c;状态就是数据。 大白话&#xff1a;Vuex 是一个插件&#xff0c;可以管理 Vue 通用的数据 (多组件共享的数据)。例如&#xff1a;购物车数…

Linux 安装 Ollama

1、下载地址 Download Ollama on Linux 2、有网络直接执行 curl -fsSL https://ollama.com/install.sh | sh 命令 3、下载慢的解决方法 1、curl -fsSL https://ollama.com/install.sh -o ollama_install.sh 2、sed -i s|https://ollama.com/download/ollama-linux|https://…

Docker Desktop无法安装报错(求助记录中)

之前Docker Desktop无法使用&#xff0c;报了一个注册表的错误&#xff08;忘记截图&#xff09;我想着更新安装下应该就好了&#xff0c;结果Docker Desktop一直无法安装&#xff0c;花了几天都没解决。同时我的window11更新也出现下载错误 - 0x80040154异常,启动或关闭Window…

Docker入门(Windows)

视频链接&#xff1a;Docker | 狂神说 环境说明 Windows For Docker WSL2 概念 Docker是什么&#xff1f; 百度百科&#xff1a;百度百科 Docker 是一个开源的平台&#xff0c;它利用操作系统级虚拟化技术来打包和运行应用程序。通过使用容器化技术&#xff0c;Docker 提…

STM32 RTC亚秒

rtc时钟功能实现&#xff1a;rtc模块在stm32内部&#xff0c;由电池或者主电源供电。如下图&#xff0c;需注意实现时仅需设置一次初始化。 1、stm32cubemx 代码生成界面设置&#xff0c;仅需开启时钟源和激活日历功能。 2、生成的代码,需要对时钟进行初始化&#xff0c;仅需…

kafka服务端之延时操作实现原理

文章目录 背景案例延时生产实现原理延时拉取实现原理 总结 背景 上篇我们说到了kafka时间轮是延时操作内部实现的重要数据结构&#xff0c;这篇我们来说下kafka内部的延时操作实现原理。这里我们以延时生产和延时拉取为例说明延时操作的实现原理。 案例 延时生产 我们知道如…

【算法】动态规划专题⑥ —— 完全背包问题 python

目录 前置知识进入正题模板 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 完全背包问题是动态规划中的一种经典问题&#xff0c;它与0-1背包问题相似&#xff0c;但有一个关键的区别&#xff1a;在完全背包问题中&#xff0c;每种物品都有无限的数量可用。…

VSCode中出现“#include错误,请更新includePath“问题,解决方法

1、出现的问题 在编写C程序时&#xff0c;想引用头文件但是出现如下提示&#xff1a; &#xff08;1&#xff09;首先检查要引用的头文件是否存在&#xff0c;位于哪里。 &#xff08;2&#xff09;如果头文件存在&#xff0c;在编译时提醒VSCode终端中"#include错误&am…

实验5 配置OSPFv2验证

实验5 配置OSPFv2验证 1.实验目的 &#xff08;1&#xff09;OSPFv2 验证的类型和意义。 &#xff08;2&#xff09;配置基于区域的 OSPFv2 简单口令验证和 MD5 验证的方法。 &#xff08;3&#xff09;配置基于链路的 OSPFv2 简单口令验证和 MD5 验证的方法。 2.实验准备 配置…

ssm校园二手交易平台小程序

博主介绍&#xff1a;✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

【WebLogic】Linux图形化界面创建WebLogic应用域

接上一篇的WebLogic在Linux图形化界面安装&#xff0c;默认勾选域创建 修改默认的域路径&#xff1a; 模板默认即可 为管理员设置用户名&#xff08;默认weblogic&#xff09;和密码 这一步应该就是14.1.2版本的secured production mode&#xff0c;即在创建应用域的时候&…

5. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Nacos

一、什么是Nacos Nacos 是阿里巴巴开源的一款云原生应用基础设施&#xff0c;它旨在简化微服务架构中服务治理和配置管理的复杂性。通过 Nacos&#xff0c;服务在启动时可以自动注册&#xff0c;而其他服务则可以通过名称来查找并访问这些注册好的实例。同时&#xff0c;Nacos…

鸿蒙接入支付宝SDK后模拟器无法运行,报错error: install parse native so failed.

鸿蒙项目接入支付宝后&#xff0c;运行提示error: install parse native so failed. 该问题可能由于设备支持的 Abi 类型与 C 工程中的不匹配导致. 官网error: install parse native so failed.错误解决办法 根据官网提示在模块build-profile.json5中添加“x86_64”依然报错 问…