C++要点总结_02_表达式与语句

表达式与语句

  • 2 表达式与语句
    • 2.1 算术运算符

2 表达式与语句

  1. 运算符就是具有运算功能的符号。
  2. “::” :作用域运算符。
  3. ->:成员指针运算符。
  4. 运算符种类:算术运算符、关系运算符、逻辑运算符、赋值运算符、位运算符、移位运算符、sizeof运算符、条件运算符和逗号运算符。

2.1 算术运算符

  1. 算术运算符:的加(+)、减(-)、乘(*)、除(/)、模运算(%)、自增(++)、自减(–)。
// 算术运算符实例
#include <iostream>
#include <type_traits>
#include <cmath>
using namespace std;int main(int argc, const char * argv[]) {int a=1,b=2;cout <<"a+b= "<< a+b <<endl;     // 1+2cout <<"a+100= "<< a+100 <<endl; // 1+100cout <<"a-b= "<< a-b <<endl;     // 1-2cout <<"a-100="<< a-100 <<endl;  // 1-100cout <<"a*b="<< a*b <<endl;     // 1*2cout <<"a*100="<< a*100 <<endl; // 1*100cout <<"a/b="<< a/b <<endl;     // 1/2cout <<"a/100="<< a/100 <<endl; // 1/100cout <<"a%b="<< a%b <<endl;     // 1%2cout <<"a%100="<< a%100 <<endl; // 1%100cout <<"a++:"<< a++ <<endl;     // 先赋值,输出1,a再自增,a+=1;a=2cout <<"a--:"<< a-- <<endl;     // 先赋值,输出2, a再自减,a-=1;a=1cout <<"++a:"<< ++a <<endl;     // a自增,a+=1;a=2,再输出2cout <<"--a:"<< --a <<endl;     // a自减,a-=1;a=1,再输出1return 0;
}
/* 运行结果:
a+b= 3
a+100= 101
a-b= -1
a-100=-99
a*b=2
a*100=100
a/b=0
a/100=0
a%b=1
a%100=1
a++:1
a--:2
++a:2
--a:1
Program ended with exit code: 0
*/
  1. 关系运算符:比较两个对象的大小,结果为true或false。
  2. 关系运算符种类:< ,> ,<= ,>= ,, !=。关系运算符
    的优先级低于算术运算符,高于赋值运算符。<,<=,>,>=的优先级相同,高于
    和!=,==和!=的优先级相同。
// 算术运算符实例
#include <iostream>
#include <type_traits>
#include <cmath>
using namespace std;int main(int argc, const char * argv[]) {int a=1,b=200,c=0;printf("a>b: %d\n",a>b);   // 0 falseprintf("a>=b: %d\n",a>=b); printf("a<b: %d\n",a<b);   // 1 trueprintf("a<=b: %d\n",a<=b);printf("a==b: %d\n",a==b);printf("a+1==c: %d\n",a+1==c);printf("a!=b: %d\n",a!=b);return 0;
}/* 运行结果
a>b: 0
a>=b: 0
a<b: 1
a<=b: 1
a==b: 0
a+1==c: 0
a!=b: 1
Program ended with exit code: 0*/
  1. 逻辑运算符:对真和假这两种逻辑值进行运算,运算后的结果仍是一个逻辑值。
  2. &&:逻辑与。,当两个对象都为真时,结果为真;有一个对象为假或两个对象都为假时,结果为假。
  3. ||: 逻辑或。当两个对象都为假时,结果为假;有一个对象为真或两个对象都为真时,结果为真。
  4. ! : 逻辑非。当对象为真时,运算结果为假;当对象为假时,运算结果为真。
#include <iostream>
#include <type_traits>
#include <cmath>
using namespace std;int main(int argc, const char * argv[]) {int a =1, b=2,c=3;// && 逻辑与运算,两个表达式均为真,结果才为真。printf("(a>b && a> c): %d \n",a>b && a> c);printf("(a>b && a< c):  %d \n",a>b && a< c);printf("(a<b && a<c): %d \n",a<b && a<c);// ||  逻辑或运算,两个表达式均为真,结果才为真。printf("(a>b): %d \n",a>b || a> c);printf("(a>b || a< c):  %d \n",a>b || a< c);printf("(a<b || a<c): %d \n",a<b || a<c);// 逻辑非运算,表达式为真,去非之后,结果为假,反之为真。printf("!(a>b): %d \n",!(a>b));printf("!(a<b): %d \n",!(a<b));return 0;
}
/* 运行结果
(a>b && a> c): 0 
(a>b && a< c):  0 
(a<b && a<c): 1 
(a>b): 0 
(a>b || a< c):  1 
(a<b || a<c): 1 
!(a>b): 1 
!(a<b): 0 
Program ended with exit code: 0 
*/
  1. 赋值运算符:赋值运算符分为简单赋值运算符和复合赋值运算符,复合赋值运
    算符又称为带有运算的赋值运算符,简单赋值运算符就是给变量赋值的运算符。
  2. 复合赋值运算符:是等同的简单赋值运算符和其他运算的组合。
  3. 复合赋值运算符: +=、-=、*=、/=、%=、<<=、>>=、&= 、!=、^=。
#include <iostream>
#include <type_traits>
#include <cmath>
using namespace std;int main(int argc, const char * argv[]) {int a =1, b=2,c=3;//  +=、-=、*=、/=、%=、<<=、>>=、&= 、!=、^=printf("a+=b: %d \n",a+=b);  // a = a+b = 1+2 =3printf("a-=b:  %d \n",a-=b); // a = a-b = 3-2 =1printf("a*=b: %d \n",a*=b);  // a = a*b = 1*2 =2printf("a/=b: %d \n",a/=b);  // a = a/b = 2*2 =1printf("a%=b:  %d \n",a%=b); // a = a%b = 1%2 =1printf("a<<=c: %d \n",a<<=c);// a = a*2*2*2 = 8printf("a>>=c: %d \n",a>>=c);// a = a/2/2/2 = 1printf("a&=c: %d \n",a&=c);  // a=a&c= 01(二进制)  & 11 (二进制) = 01(二进制) = 1(十进制)printf("a|=c: %d \n",a|=c);  // a=a|c= 01(二进制)  | 11 (二进制) = 11(二进制) = 3(十进制)printf("a^=c: %d \n",a^=c);  // a=a^c= 11(二进制)  | 11 (二进制) = 00(二进制) = 0(十进制)return 0;
}/*a+=b: 3a-=b:  1a*=b: 2a/=b: 1a=b:  1a<<=c: 8a>>=c: 1a&=c: 1a|=c: 3a^=c: 0Program ended with exit code: 0*/
  1. 位运算符:有&(位逻辑与)、|(位逻辑或)、^(位逻辑异或)和~(取反运算符)。
  2. 位运算优先级:在双目运算符中,位逻辑与优先级:最高,位逻辑或次之,位逻辑异或最低。取反运算符为单目运算符。
    13.位逻辑与:是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求与,若两个操作数对象同一位都为1,则结果对应位为1,否则结果中对应位为0。
    14.位逻辑或:是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求或,若两个操作数对象同一位都为0,则结果对应位为0,否则结果中对应位为1。
    15.位逻辑异或:将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求异或,若两个操作数对象同一位不同时为1,则结果对应位为1,否则结果中对应位为0。
    16.取反运算符:将操作数转换成二进制表示方式,然后将各位二进制位由1变为0,由0变为1。

#include <iostream>
#include <type_traits>
#include <cmath>
using namespace std;int main(int argc, const char * argv[]) {int a =1, b=2;printf("a&b: %d \n",a&b);  // 1&2 = (二进制) 01&10 =00(二进制) = 0  (十进制)printf("a|b: %d \n",a|b);  // 1|2 = (二进制)01|10 =11(二进制) = 3   (十进制)printf("a^b: %d \n",a^b);  // 1^2 = (二进制)01^10 =11 (二进制)= 3    (十进制)printf("~a: %d \n",~a);   // ~1 = (二进制)~00000001=10000010 (二进制)= -2  (十进制)return 0;
}
/*a&b: 0a|b: 3a^b: 3~a: -2Program ended with exit code: 0*/
  1. 移位运算符:<<(左移)和>>(右移),
  2. 左移: 将一个二进制操作数对象按指定的移动位数向左移,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补充。左移相当于乘以2的幂。
  3. 右移:将一个二进制的数按指定的位数向右移动,右边(低位端)溢出的位被丢弃,左边(高位端)的空位或者一律用0填充,或者用被移位操作数的符号位填充,运算结果和编译器有关,在使用补码的机器中,正数的符号位为0,负数的符号为1。

参考《C++从入门到精通》

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

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

相关文章

持续更新-各种趁手的开源工具

开源工具名称用途参考及备注 zcurd zcurd是一个通用的后台管理系统&#xff0c;有完善的用户、菜单权限管理及表单管理的开发方案。 https://www.oschina.net/p/zcurd?hmsraladdin1e1 简单业务可以通过[表单配置]快速生成&#xff0c;特定业务通过代码生成&#xff0c;完成…

Python | Leetcode Python题解之第278题第一个错误的版本

题目&#xff1a; 题解&#xff1a; # The isBadVersion API is already defined for you. # def isBadVersion(version: int) -> bool:class Solution:def firstBadVersion(self, n: int) -> int:left, right 1, nwhile left < right:mid left (right - left) //…

uboot的mmc partconf命令

文章目录 命令格式参数解释具体命令解释总结 mmc partconf 是一个用于配置 MMC (MultiMediaCard) 分区的 U-Boot 命令。具体来说&#xff0c;这个命令允许你设置或读取 MMC 卡的分区配置参数。让我们详细解释一下 mmc partconf 0 0 1 0 命令的含义。 命令格式 mmc partconf &…

力扣高频SQL 50题(基础版)第七题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第七题1068. 产品销售分析 I题目说明思路分析实现过程准备数据&#xff1a;实现方式&#xff1a;结果截图:总结&#xff1a; 力扣高频SQL 50题&#xff08;基础版&#xff09;第七题 1068. 产品销售分析 I 题目说明 …

大模型额外篇章三:vercel搭建openai中转服务器

文章目录 一、起因和注意1)起因2)注意二、实现方法(原理:透传)1)nginx方案2)node服务3)纯 js 方案4)选择国外的域名服务商(DNS 解析路径缩短,建议方案国外提供 CDN 云服务商结合自建云服务业务做负载均衡)三、实践(vercel部署OpenAI代理服务器)四、测试搭建的Ope…

微前端--qiankun

qiankun qiankun分为accpication和parcel模式。 aplication模式基于路由工作&#xff0c;将应用分为两类&#xff0c;基座应用和子应用&#xff0c;基座应用维护路由注册表&#xff0c;根据路由的变化来切换子应用。子应用是一个独立的应用&#xff0c;需要提供生命周期方法供…

我的创作纪念日(第4096天)

机缘 上大学时开始接触CSDN&#xff0c;2005年开了一个帐号&#xff0c;但后来弄丢了&#xff0c;2012年开了这个号&#xff0c;开始在上面分享一些心得&#xff0c;“好记性不如烂笔头”&#xff0c;写作可以让一些自己认为有价值的东西留下来。也有人说&#xff0c;学习不仅…

【中项】系统集成项目管理工程师-第5章 软件工程-5.4软件实现

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

51单片机嵌入式开发:14、STC89C52RC 之HX1838红外解码NEC+数码管+串口打印+LED显示

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示1 概述2 硬件电路2.1 遥控器2.2 红外接收器电路2.3 STC89C52单…

【JAVA开发笔记】Reids下载、安装、配置-Windows篇(超详细,含Redis可视化管理工具!!!)

目录 1. Redis 简介 2. 下载 Redis 安装包 3. 开启 Redis 服务 4. 配置环境变量 5. Redis 服务注册为系统服务 6. Redis 服务测试和简单使用 7. 下载安装 Redis 管理工具 8. 管理工具连接 Redis 服务器 1. Redis 简介 Redis&#xff08;Remote Dictionary Server&…

Pytorch transforms 的研究

绝对路径与相对路径差别 transforms的使用 from torchvision import transforms from PIL import Imageimg_path "dataset/train/bees/16838648_415acd9e3f.jpg" img Image.open(img_path) tensor_trans transforms.ToTensor() tensor_img tensor_trans(img) prin…

etcd节点通信的协议和端口

etcd是一个分布式键值存储系统&#xff0c;它提供了一种高可用的方式来存储配置和服务信息。在etcd中&#xff0c;节点之间的通信主要依赖于HTTP协议&#xff0c;并且使用gRPC作为客户端与etcd服务端之间的通信接口 。以下是etcd节点通信的协议和端口的详细信息&#xff1a; 客…

PostgreSQL 中如何实现数据的批量插入和更新?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何实现数据的批量插入和更新&#xff1f;一、批量插入数据1. 使用 INSERT INTO 语句结…

redis的持久化机制以及集群模式

1.redis的持久化机制 内存数据库具有高速读写的优势&#xff0c;但由于数据存储在内存中&#xff0c;一旦服务器停止或崩溃&#xff0c;所有数据将会丢失。持久化机制的引入旨在将内存中的数据持久化到磁盘上&#xff0c;从而在服务器重启后能够恢复数据&#xff0c;提供更好的…

初阶数据结构——二叉树大汇总

这篇博客将会讲到二叉树的部分内容及堆的相关知识~ 这里将会涉及到大量的递归&#xff08;头大&#xff09; 目录 1.树 1.1树的概念 1.2树的相关概念 1.3树的表示 1.4树的实际应用 2.二叉树 2.1二叉树的概念 2.2特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 2.2…

sdut-C语言实验——数列求和2

正整数序列是指从1开始的序列&#xff0c;例如{1,2,3,4&#xff0c;......} 给定一个整数 n&#xff0c;现在请你求出正整数序列 1 - n 的和。 输入格式: 输入一个整数 n 。&#xff08;1 < n < 1000&#xff09; 输出格式: 输出一个整数&#xff0c;即为正确答案。 输入…

如何用python在大麦网抢票?新手也能学会!

使用Python如何在大麦网抢票 背景介绍 大麦网是一个知名的演出票务平台&#xff0c;很多演唱会、体育赛事等热门活动的门票都可以在这里购买。由于热门场次的门票往往会在开售时秒光&#xff0c;因此抢票成为了很多人的一项技术活。本文将介绍如何使用Python编写程序来自动在大…

基于STM32的逻辑分析仪

文章目录 一、逻辑分析仪体验1、使用示例1.1 逻辑分析仪1.2 开源软件PulseView 2、核心技术2.1 技术方案2.2 信号采集与存储2.3 数据上传 3、使用逻辑分析仪4、 SourceInsight 使用技巧4.1新建工程4.2 设置工程名及工程数据目录4.3 指定源码目录4.4 添加源码4.5 同步文件4.6 操…

Llama 3.1:Meta的最新AI模型发布

Meta的最新AI模型发布 性能特点基准测试教学模型模型结构开源和可用性 2024年7月23日&#xff0c;Meta正式发布了其开源大型语言模型Llama的最新版本——Llama 3.1。这个版本拥有4050亿参数&#xff0c;是迄今为止Meta发布的最大版本。Llama 3.1是对今年4月发布的Llama 3的更新…

Jdk11与Jdk17区别

JDK 11与JDK 17之间存在一些显著的不同点,以下是具体的差异归纳: 模块化与安全性 JDK 11引入了模块化系统(Jigsaw项目),使得开发者可以将代码组织成模块,提高了大型项目的可维护性和可扩展性。 JDK 17作为长期支持(LTS)版本,增强了模块系统的安全性和可靠性,通过封…