C++基础——运算符详解

C++基础——运算符(算数、关系、逻辑、位、赋值、三元运算符、其他运算符) C++的运算符:算数、关系、逻辑、位、赋值、三元运算符、其他运算符 阅读详情

初识运算符

运算符分为5大类:算数运算符、赋值运算符、复合赋值运算符、比较运算符、逻辑运算符。算数运算符就是加减乘除运算,
比较运算符(布尔类型,进行大小比较),关系运算符进行值的大小比较(按照一定的关系来进行)。位运算符。按照比特位来进行进行(+,-,*,/)运算。

位运算

从现代计算机中所有的数据二进制的形式存储在设备中。即 0、1两种状态,计算机对二进制数据进行的运算(+、-、*、/)都是叫位运算,即将符号位共同参与运算的运算。

认识位运算的相关运算符。

在这里插入图片描述

能实现什么样的操作?及实现原理。

计算机在对于相关数据进行存储时不会直接存储数字字符。平时使用的A~Z在计算机中显示是以字符形式出现的。数字字符在计算机中以ascll码来进行数据储存。

int main()
{
	int i = 0;
	scanf("%d", &i);
	printf("%c", i);
	return 0;
}

在这里插入图片描述
通过上面代码可以看出实际我们使用的字符并不是直接以字符形式存储的。
所以在我们进行运算时,计算机其实是在使用二进制位来进行运算。都是以补码进行的。
按位与(&):

1、清0操作。 2、对于指定位输出。 3、判断奇偶。

判断奇偶可以使用最低位是否为1,来进行判断。最低位的权重是0,计算时就是20的值来判断。
按位或(|)

指定位置1

按位异或(^)

1、指定位翻转
2、进行俩数交换
3、与0进行异或时,值不会发生改变。

对于俩数交换,可以不使用临时变量,但是对于数值太大会产生溢出。

void Swap(int &a, int &b){
    if (a != b){
        a ^= b;
        b ^= a;
        a ^= b;
    }
}

取反运算符(~)

可以实现对于参与运算的二进制进行0、1的“取反”操作

左移(<<)、右移(>>)运算符

可以实现对于二进制位的移位操作,值得注意的是如果左移就是后面左边补0。右移是右边补符号位(正数补0,负数补1)。

对于二进制的左移会对值扩大2倍,右移减少2倍。

比较运算符

算术运算符、赋值运算符和关系运算符的优先级是什么?

优先级排序为:算术运算符 > 关系运算符 > 赋值运算。

算术运算符中,乘法运算符【*】、除法运算符【/】、取余运算符【%】属于优先级第三级,加法运算符【+】、减法运算符【-】属于第四级。

关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。其中,关系运算符【< > <= >=
】属于优先级第六级,等于运算符【==】、不等于运算符【!=】属于优先级第七级。

赋值运算符【= += -= *= /= %= >>= <<= &= |= ^=】属于优先级第第十四级。

所以,优先级排序为:算术运算符高于关系运算符高于赋值运算。

关系运算符使用比较频繁,在条件判断语句中,循环语句中都常用。对于比较来说规则可以由我们来设计,对于名字的比较,日期比较……自定义类型比较就是就可采用自己设计规则来比较。对于布尔类型的判断true,false。可以使用整数1为真,0为假。

逻辑运算符

逻辑运算符就比较简单,也称为逻辑 与、逻辑或、逻辑非运算。主要用于多个条件的前提下同时使用。
在这里插入图片描述
常见就是对于闰年的判断实现。

if((year%400==0)||((year%100!=0)&&(year%4==0));

需要知道逻辑表达式是一个“短路计算”一旦确定整个表达式的值就会立刻停止。

赋值运算符

赋值运算符是可以看作是运算后的重新赋值给原来的值,会改变原有值。
在这里插入图片描述

以上便是运算符的基础认知,对于比较运算符的规则制定,可以参考C++类模板中的运算符重载。

【C++】运算符大全 C++ 是一种功能强大且灵活的编程语言,支持多种运算符,这些运算符可以用于执行各种类型的操作,如算术运算、比较、逻辑运算等。 阅读详情

相关推荐

【010】掌握C++运算符:编程基础的深入研究

本文深入探讨了C++中的各种运算符,从基本的算术运算符到复杂的位运算符和条件运算符。通过详细的解释和示例代码,了解了这些运算符的功能、用法和注意事项。

Lion_Long的博客 3878

C++ 运算符

C++ 运算符

weixin_60461563的博客 5927

15、C++基础:ASCII码、关键字与运算符详解

本文详细介绍了C++编程语言的基础知识,包括ASCII码的表示方法、C++关键字的功能和使用示例、运算符的优先级和结合性规则,以及C++的类型系统。此外,还包含了数据类型的实际应用场景、关键字与运算符的综合应用示例,并通过总结帮助读者更好地回顾和掌握C++的核心基础概念,为深入学习编程奠定坚实基础。

week9的博客 229

C++教程|运算符

C++运算符是描述对数据进行的运算(操作)、体现数据之间运算关系的符号,运算符也叫操作符

皖山文武 2476

DEA各种模型原理及stata代码实现

DEA各种模型原理及stata代码实现DEA各种模型原理及stata代码实现一、CCR和BCC1.原理2.效率测算stata代码3.Malmquist指数3.1M指数3.2Global-Malmquist指数4.指数计算代码与案例二、SBM模型1.原理2.stata代码实现三、方向性距离函数(DDF)1.原理2.stata代码实现3.非径向DDF模型(NDDF)3.GML指数4.指数测算四、总结 DEA各种模型原理及stata代码实现 一、CCR和BCC 1.原理 CCR模型产出导向下的效率通过求解以下规划

wonder1322的博客 4万+

基于BS21的星闪模块设计电路SLE/BLE

基于BS21的星闪模块设计电路SLE/BLE HI2821

2503_91889531的博客 2737

【C++基础】运算符详解

总结:前置递增先对变量进行++,再计算表达式,后置递增相反。注意:C和C++ 语言的比较运算中,总结:只有整型变量可以进行取模运算。总结:在除法运算中,除数不能为0。总结: 真变假,假变真。

数据知道的博客 1万+

ESP32-C3微型9轴感知模块的硬件工程实践

在嵌入式系统小型化趋势下,低功耗微控制器与多传感器融合成为智能终端的基础技术路径。其核心原理在于芯片能效比、射频合规性与电源噪声抑制的协同优化,技术价值体现在降低认证门槛、提升EMC鲁棒性及保障MEMS传感器精度。典型应用场景包括可穿戴设备、微型无人机姿态控制和工业边缘传感节点。本文围绕ESP32-C3平台展开,深入解析QFN封装选型逻辑、同步降压电源设计、LSM9DS1九轴校准策略等关键环节,覆盖FCC/CE认证规避、USB-C接口EMC防护等高频工程痛点。

weixin_42607969的博客 366

CPP-基础:运算符重载详解

1.运算符重载定义:   C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一。 运算符重载是通过创建运算符函数实现的,运算符函数...

dixiongbi7761的博客 728

MIPI D-PHY的校准测试

MIPI的校准测试困扰了很久,今天终于得以解决!

一只豌豆象的博客 3917

【GB28181】wvp-GB28181-pro++ZLMediaKit编译安装国标流媒体服务器教程(Windows平台)

本文基于ZMLMediaKit+WVP-PRO在windows平台进行编译部署GB28181平台,网上教程也比较多,都大同小异,实际操作过程中容易出错的地方也比较多:redis安装无密码,mysql安装后密码的修改以及wvp数据可的创建,配置文件侧修改,尤其是和端口相关的项,再就是运行服务时各种错误需要注意,常见的错误已经做了汇总,遇到问题大家不要怕,找到报错的地方查看定位即可。

废人一枚的博客 4475

C++基础语法详解 运算符

基本位运算符// 二进制字面量(C++14)// 0b0000'0101,按位与// 0b0011'1111,按位或// 0b0011'1010,按位异或// 0b1100'1010,按位取反// 26// 0b0110'1000,104(乘以4)// 0b0000'0110,6(除以4)// 注意有符号数的移位int y = -8;// -4,算术右移(保持符号)位运算符的典型应用1. 标志位管理// 设置标志位A// 设置标志位C// 检查标志位A。

daijiobu1114的博客 577

openlayers全面教程306+【目录】

vue+openlayers系列教程旨在为开发者提供简单快捷的示例。在每一个示例中,解释相应的API知识点。

大剑师兰特的GIS世界 2万+

c++基础:运算符重载详解

c++:运算符重载

weixin_51412054的博客 1064

SAP Joule Studio 全景解析

摘要:SAP Joule Studio是SAP Build平台中的低代码/专业级复合工作台,用于构建和管理企业专属的Joule智能体与技能。它支持通过拖拽和声明式编排实现跨系统任务自动化,与SAP及第三方系统集成。核心构件包括Agent(智能体)、Skill(技能)、Action(动作)和Project(项目)。Joule Studio强调企业级落地,与SAP Build Process Automation等工具协同,实现从设计到运行的全生命周期管理。典型应用场景包括供应链补货、财务关账和人力服务台自动化

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 388

【RT-DETR涨点改进】独家创新改进篇 | AAAI2024 | RT-DETR引入CFBlock增强对长程依赖和全局语义信息的建模能力,有助于提升复杂场景下小目标、遮挡目标的检测精度

本文给大家介绍在RT-DETR中引入CFBlock模块,能够有效提升模型对长程依赖和全局语义信息的建模能力,在保持轻量化和高效推理的基础上增强特征表达力,特别有助于提升复杂场景下小目标、遮挡目标的检测精度,从而实现更优的精度与速度平衡。

Ai缝合怪、助力小伙伴高效发论文 259

C++基础-运算符重载详解

本文详解C++运算符重载。

qq_30725967的博客 718

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C++运算符详解:从基础到高级全面解析

本文全面介绍了C++中的各类运算符及其使用方法。主要内容包括:1)算术运算符(加减乘除、自增自减);2)关系运算符(比较运算);3)逻辑运算符(与或非及短路特性);4)位运算符(按位操作及位移运算);5)赋值运算符(简单与复合赋值)。通过代码示例和流程图解,详细说明了各运算符的语法规则、运算原理和典型应用场景,如条件判断、位掩码操作等。这些运算符是C++编程的基础组成部分,掌握它们对编写高效代码至关重要。

weixin_51786043的博客 1172

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C++零基础入门——06运算符详解

本篇是对C++中运算符的详细介绍。

weixin_45536765的博客 1189

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C++ 基础语法入门(三):运算符详解

本文是 C++ 学习系列的第三篇,介绍各种类型的运算符,帮助你掌握编程中表达逻辑与计算的核心工具。

i1Godlike的博客 536

[C++基础学习-02]----C++运算符详解

算术运算符a、加法运算符(+):对两个数值进行相加。b、减法运算符(-):从左操作数中减去右操作数。c、乘法运算符(*):将两个数相乘。d、除法运算符(/):将左操作数除以右操作数,得到商。e、取模运算符(%):返回两个数相除的余数。关系运算符a、等于运算符(==):判断两个操作数是否相等。b、不等于运算符(!=):判断两个操作数是否不相等。c、大于运算符(>)、小于运算符(=)、小于等于运算符(

一伦明悦的博客 1704

c语言 运算符重载,c++运算符重载基础知识详解

c++运算符重载基础知识详解实际上,很多C++运算符已经被重载。eg:将*运算符用于地址,将得到存储在这个地址中的值,将他用于2个数字时,得到的将是他们的乘积。C++根据操作数的'数目和类型来决定采用哪种操作。本文特意为大家收集整理了c++运算符重载基础知识详解,希望大家喜欢!C++允许将运算符重载扩展到用户定义的类型。例如,允许使用+将两个对象相加。编译器将根据操作数的数目和类型决定使用加法定义...

weixin_28785681的博客 369

C++零基础第三天:运算符详解

本文详细介绍了C++中常用的运算符类型及其用法。主要内容包括:算术运算符(加减乘除、取模、递增递减),强调整数除法会舍弃小数部分,取模运算仅适用于整数;赋值运算符(=、+=等)的多种形式;比较运算符(==、!=等)返回布尔值的特性;以及逻辑运算符(!、&&、||)的真值判断规则。通过代码示例展示了各类运算符的具体应用场景和使用注意事项,如除数不能为零等常见错误。全文系统性地梳理了C++运算符的核心知识,为程序设计中的运算操作提供了实用指导。

acsdnrb的博客 678

c++零基础通关教程第九课 逻辑运算符详解

摘要:C++第九课详解三种逻辑运算符: (与)、 (或)、 ;(非)。通过生活场景类比(如游乐园门票判断)和代码实例(年龄身高判断、密码验证),讲解运算符用法和真值表。 课程最后预告下节将讲解for循环实现代码重复执行的功能。全文通过生活化案例帮助理解复杂的逻辑判断,为后续循环结构学习奠定基础。

温情亿度网络科技 2476

C++ 运算符重载详解:从基础到日期类完整实现

运算符重载是 C++ 强大表现力的来源之一,用好它能让你的类用起来像内置类型一样自然。但也要避免滥用,只有当运算符的含义清晰直观时才使用,否则不如用普通成员函数更明确。

2602_96399117的博客 163
上一篇: STL常用梳理——STRING
下一篇: STL常用梳理——VECTOR常用接口及其迭代器实现
小鱼君
博客等级 码龄4年 530粉丝 33原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鱼君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值