【带头学C++】----- 1.基础知识 ---- 1.21.23.9 位运算符的综合应用

2023-10-25 21:04

本文主要是介绍【带头学C++】----- 1.基础知识 ---- 1.21.23.9 位运算符的综合应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        最近做任务,公司项目比较重,赶上1024的活动流量券任务,内容治疗略微有一些杂乱,后期会把专栏目录重新搞一下,内容我是融合了很多课程和书籍包含ai的一些理解,我整理和增加了自己的见解和代码贴图,后续有需要代码的可以私聊我。免费赠送(专栏整理完了再发哈)

1.23.9 位运算符的综合应用

本章主要对上一篇文章作为补充,补充一下关于位运算符的一些综合应用。同时补充一下关于三目运算符、运算符的优先级、以及重要的自增、自减操作。

上图引用千锋教育C++基础班课程笔记 

1.23.10 三目运算符 ?:

表达式1?值1:值2
如果表达式1为真整个表达式的值为值1

如果表达式1为假 整个表达式的值为值2

例如:

    int age = 20;string result = (age >= 18) ? "成年人" : "未成年人";cout << "年龄:" << age << endl;cout << "身份:" << result << endl;

 其实相当于if-else,经常用于比较简单的比较条件,省去if-else的大块语句

 

注意特殊的:

test08里面我们可以看到data1的值是10,data2是原始是20,最后data2的值发生了改变。

实际上是因为在给 (data1>data2?data1:data2) 赋值时,根据条件 (data1>data2) 的判断结果,如果为真,则将 data1 的值赋给整个表达式,如果为假,则将 data2 的值赋给整个表达式。

在这个例子中,(data1>data2?data1:data2) 的值为 data2,因为 data1 的值并没有大于 data2。所以 data2 的值被赋为了 200

因此,最后的输出结果中,data1 的值保持为原来的 10,而 data2 的值被赋为了 200

 

1.23.11 运算符优先级

 1.图标展示运算符号的优先级

 

图示在C++primer一书中。 

 

 

 

1.23.12 自增自减

1.基础认识++(自增加1)和--(自减少1)符号

在C++中,递增运算符(++)和递减运算符(--)提供了一种便捷的方式来对对象进行加1和减1操作。

递增运算符有两种形式:前置版本和后置版本。前置递增运算符将运算对象加1,并返回修改后的对象本身作为求值结果。例如,++x 将会将变量 x 的值加1,并返回加1后的值。

后置递增运算符也将运算对象加1,但是返回的是运算对象改变之前的值的副本。例如,x++ 将会将变量 x 的值加1,但返回的是加1之前的值。

递减运算符的工作原理与递增运算符类似,只是将对象减1。

#include <iostream>
using namespace std;int main() {int x = 5;int y = 10;// 前置递增运算符++x; // x 增加1,现在 x 的值为 6cout << "x = " << x << endl;// 后置递增运算符y++; // y 增加1,但返回的是加1之前的值,现在 y 的值为 11cout << "y = " << y << endl;// 前置递减运算符--x; // x 减少1,现在 x 的值为 5cout << "x = " << x << endl;// 后置递减运算符y--; // y 减少1,但返回的是减少之前的值,现在 y 的值为 10cout << "y = " << y << endl;return 0;
}

2.在一条语句中混用解引用和递增运算符 

     如果我们想在一条复合表达式中既将变量加1或减1又能使用它原来的值,这时就可以使用递增和递减运算符的后置版本。

这里引用了C++primer5版本里面对改问题解释 

 

这篇关于【带头学C++】----- 1.基础知识 ---- 1.21.23.9 位运算符的综合应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

C#通过进程调用外部应用的实现示例

《C#通过进程调用外部应用的实现示例》本文主要介绍了C#通过进程调用外部应用的实现示例,以WINFORM应用程序为例,在C#应用程序中调用PYTHON程序,具有一定的参考价值,感兴趣的可以了解一下... 目录窗口程序类进程信息类 系统设置类 以WINFORM应用程序为例,在C#应用程序中调用python程序

Java应用如何防止恶意文件上传

《Java应用如何防止恶意文件上传》恶意文件上传可能导致服务器被入侵,数据泄露甚至服务瘫痪,因此我们必须采取全面且有效的防范措施来保护Java应用的安全,下面我们就来看看具体的实现方法吧... 目录恶意文件上传的潜在风险常见的恶意文件上传手段防范恶意文件上传的关键策略严格验证文件类型检查文件内容控制文件存储

CSS3 布局样式及其应用举例

《CSS3布局样式及其应用举例》CSS3的布局特性为前端开发者提供了无限可能,无论是Flexbox的一维布局还是Grid的二维布局,它们都能够帮助开发者以更清晰、简洁的方式实现复杂的网页布局,本文给... 目录深入探讨 css3 布局样式及其应用引言一、CSS布局的历史与发展1.1 早期布局的局限性1.2

C++类和对象之初始化列表的使用方式

《C++类和对象之初始化列表的使用方式》:本文主要介绍C++类和对象之初始化列表的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C++初始化列表详解:性能优化与正确实践什么是初始化列表?初始化列表的三大核心作用1. 性能优化:避免不必要的赋值操作2. 强

C++迭代器失效的避坑指南

《C++迭代器失效的避坑指南》在C++中,迭代器(iterator)是一种类似指针的对象,用于遍历STL容器(如vector、list、map等),迭代器失效是指在对容器进行某些操作后... 目录1. 什么是迭代器失效?2. 哪些操作会导致迭代器失效?2.1 vector 的插入操作(push_back,

在React聊天应用中实现图片上传功能

《在React聊天应用中实现图片上传功能》在现代聊天应用中,除了文字和表情,图片分享也是一个重要的功能,本文将详细介绍如何在基于React的聊天应用中实现图片上传和预览功能,感兴趣的小伙伴跟着小编一起... 目录技术栈实现步骤1. 消息组件改造2. 图片预览组件3. 聊天输入组件改造功能特点使用说明注意事项

Redis中RedisSearch使用及应用场景

《Redis中RedisSearch使用及应用场景》RedisSearch是一个强大的全文搜索和索引模块,可以为Redis添加高效的搜索功能,下面就来介绍一下RedisSearch使用及应用场景,感兴... 目录1. RedisSearch的基本概念2. RedisSearch的核心功能(1) 创建索引(2

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与