【带头学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

相关文章

线程池ThreadPoolExecutor应用过程

《线程池ThreadPoolExecutor应用过程》:本文主要介绍如何使用ThreadPoolExecutor创建线程池,包括其构造方法、常用方法、参数校验以及如何选择合适的拒绝策略,文章还讨论... 目录ThreadPoolExecutor构造说明及常用方法为什么强制要求使用ThreadPoolExec

C++ 右值引用(rvalue references)与移动语义(move semantics)深度解析

《C++右值引用(rvaluereferences)与移动语义(movesemantics)深度解析》文章主要介绍了C++右值引用和移动语义的设计动机、基本概念、实现方式以及在实际编程中的应用,... 目录一、右值引用(rvalue references)与移动语义(move semantics)设计动机1

mysql_mcp_server部署及应用实践案例

《mysql_mcp_server部署及应用实践案例》文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例... 目录mysql_mcp_server部署及应用案例1. 服务安装1.1. 下载源码1.2. 创建独立

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

C++构造函数中explicit详解

《C++构造函数中explicit详解》explicit关键字用于修饰单参数构造函数或可以看作单参数的构造函数,阻止编译器进行隐式类型转换或拷贝初始化,本文就来介绍explicit的使用,感兴趣的可以... 目录1. 什么是explicit2. 隐式转换的问题3.explicit的使用示例基本用法多参数构造

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

C++打印 vector的几种方法小结

《C++打印vector的几种方法小结》本文介绍了C++中遍历vector的几种方法,包括使用迭代器、auto关键字、typedef、计数器以及C++11引入的范围基础循环,具有一定的参考价值,感兴... 目录1. 使用迭代器2. 使用 auto (C++11) / typedef / type alias

Python海象运算符:=的具体实现

《Python海象运算符:=的具体实现》海象运算符又称​​赋值表达式,Python3.8后可用,其核心设计是在表达式内部完成变量赋值并返回该值,从而简化代码逻辑,下面就来详细的介绍一下如何使用,感兴趣... 目录简介​​条件判断优化循环控制简化​推导式高效计算​正则匹配与数据提取​性能对比简介海象运算符

C语言逗号运算符和逗号表达式的使用小结

《C语言逗号运算符和逗号表达式的使用小结》本文详细介绍了C语言中的逗号运算符和逗号表达式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接其一般形式为:表达