鸡啄米:C++编程入门系列之五(运算符和表达式)

article/2025/11/8 22:21:47

转载自:

http://www.jizhuomi.com/software/32.html

 上一讲鸡啄米给大家讲了一些数据类型,这一讲主要讲解编程入门知识-运算符和表达式。运算符,顾名思义,就是用于计算的符号,比如+,-,*,/。表达式是用于计算的公式,由运算符、运算量(操作数)和括号组成。

      有些运算符需要两个操作数,使用形式为:操作数 运算符 操作数,这样的运算符就叫做二元运算符或双目运算符,只需要一个操作数的运算符叫做一元运算符或单目运算符。运算符具有优先级和结合性。如果一个表达式中有多个运算符则先进行优先级高的运算,后进行优先级低的运算。结合性就是指当一个操作数左边和右边的运算符优先级相同时按什么样的顺序进行运算,是自左向右还是自右向左,下面会具体讲到。鸡啄米来详细介绍几种类型的运算符和表达式。

      1.算术运算符和算术表达式

      算术运算符包括基本算术运算符和自增自减运算符。由算术运算符、操作数和括号组成的表达式称为算术表达式。基本算术运算符有:+(加),-(减或负号),*(乘),/(除),%(求余)。其中"-"作为负号时为一元运算符,作为减号时为二元运算符。优先级跟我们数学里的是一样的,先乘除,后加减。"%"是求余运算,它的操作数必须是整数,比如a%b是要计算a除以b后的余数,它的优先级与"/"相同,这里要注意的是,"/"用于两个整数相除时,结果含有小数的话小数部分会舍掉,比如2/3的结果是0。

        C++的自增运算符"++"和自减运算符"--"都是一元运算符,这两个运算符都有前置和后置两种形式,比如i++是后置,--j是前置。无论是前置还是后置都是将操作数的值增1或减1后再存到操作数内存中的位置。如果i的原值是2,则i++这个表达式的结果是2,i的值则变为3,。如果j的原值也是2,则--j这个表达式的结果是1,j的值也变为1。自增或自减表达式包含到更复杂的表达式中时,比如假设i的原值是1,cout<<i++这个表达式会先输出i的值1,然后i再自增1,变为2,而cout<<++i这个表达式会先使i先自增1变为2,然后再输出i的值2。

       2.赋值运算符和赋值表达式

      最简单的赋值运算符就是"=",带有赋值运算符的表达式被称为赋值表达式。例如n=n+2就是一个赋值表达式,赋值表达式的作用就是把等号右边表达式的值赋给等号左边的对象。赋值表达式的类型是等号左边对象的类型,它的结果值也是等号左边对象被赋值后的值,赋值运算符的结合性是自右向左。什么叫自右向左呢?请看这个例子:a=b=c=1这个表达式会先从右边算起,即先算c=1,c的值变为1这个表达式的值也是1,然后这个表达式就变成了a=b=1,再计算b=1,同样b也变为1,b=1这个表达式的值也变成1,所以a也就变成了1。

       除了"="外,赋值运算符还有+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。其中前五个是赋值运算符和算术运算符组成的,后五个是赋值运算符和位运算符组成的,这几个赋值运算符的优先级跟"="相同,结合性也是自右向左。鸡啄米举几个例子说明下,a+=5就等价于a=a+5,x*=y+3等价于x=x*(y+3)。

鸡啄米:C++编程入门系列之五(运算符和表达式)

       3.逗号运算符和逗号表达式

       逗号也是一个运算符,它的使用形式为:表达式1,表达式2。求这个表达式的值就要先解表达式1,然后解表达式2,最终这个逗号表达式的值是表达式2的值。比如计算a=1*2,a+3,应先计算a=1*2,结果为2,再计算a+3的值,a的值已经变成了2,再加上3为5,这个逗号表达式的最终结果就是5。

       4.逻辑运算和逻辑表达式

       C++中提供了用于比较的关系运算符和用于逻辑分析的逻辑运算符。

       关系运算符包括<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、==(等于)、!=(不等于)。前四个的优先级相同,后两个的优先级相同,而且前四个比后两个的优先级高。用关系运算符把两个表达式连起来就是关系表达式,关系表达式的结果类型为bool,值只能是true或false。比如,a>b,a大于b时表达式a>b表达式的值是true,否则就是false。更复杂的表达式也算是一个道理。

       逻辑运算符包括!(非)、&&(与)、||(或),优先级依次降低。用逻辑运算符将关系表达式连起来就是逻辑表达式,逻辑表达式的结果也是bool类型,值也只能是true或false。"!"是一元运算符,使用形式是!操作数。非运算是对操作数取反。比如!a,a的值是true,则!a的值是false。"&&"是二元运算符,用来求两个操作数的逻辑与,只有两个操作数的值都是true,逻辑与的结果才是true,其他情况下结果都是false。"||"也是二元运算符,用来求两个操作数的逻辑或,只有两个操作数的值都是false时,逻辑或的结果才是false,其他情况下结果都是true。比如,int a=3,b=5,c=2,d=1; 则逻辑表达式(a>b)&&(c>d)的值为false。

       5.条件运算符和条件表达式

       C++中唯一的一个三元运算符是条件运算符"?"。条件表达式的使用形式是:表达式1?表达式2:表达式3。表达式1是bool类型的,表达死2,3可以是任何类型,并且类型可以不同。条件表达式的类型是表达式2和3中较高的类型,类型的高低后面介绍。条件表达式会先解表达式1,如果表达式1的值是true,则解表达式2,表达式2的值就是条件表达式的值,而如果表达式1的值是false,则解表达式3,其值就是条件表达式的最终结果。比如:(a<b)?a:b,如果a小于b,则结果为a,如果a大于b,则结果为b。

       6.sizeof运算符

       sizeof运算符用来计算某个对象在内存中占用的字节数。此运算符的使用形式为:sizeof(类型名)或sizeof(表达式)。计算结果是这个类型或者这个表达式结果在内存中占的字节数。

       7.位运算

      (1)按位与(&)。它是对两个操作数的二进制形式的每一位分别进行逻辑与操作。比如3的二进制形式为00000011,5的二进制形式为00000101,按位与后结果是00000001。

      (2)按位或(|)。它对两个操作数的二进制形式的每一位分别进行逻辑或操作。还是比如3和5按位或运算后结果是00000111。

      (3)按位异或(^)。它对两个操作数的每一位进行异或,也就是如果对应位相同则运算结果为0,若对应位不同则计算结果为1。例如3和5按位异或后结果为00000110。

      (4)按位取反(~)。这是一个一元运算符。它对一个二进制数的每一位求反。比如,3按位取反就是11111100。

      (5)移位。包括左移运算(<<)和右移运算(>>),都是二元运算符。移位运算符左边的数是需要移位的数值,右边的数是移动的位数。左移是按指定的位数将一个数的二进制值向左移位,左移后,低位补0,移出的高位舍弃。右移是按照指定的位数将一个数的二进制值向右移位,右移后,移出的低位舍弃,如果是无符号数则高位补0,如果是有符号数,则高位补符号位或0,一般补符号位。比如,char型变量的值是-8,则它在内存中的二进制补码值是11111000,所以a>>2则需要将最右边两个0移出,最左边补两个1,因为符号位是1,则结果为11111110,对其再求补码就得到最终结果-2。

        8.混合运算时数据类型的转换。

       表达式中的类型转换分为:隐含转换和强制转换。

       在算术运算和关系运算中如果参与运算的操作数类型不一样,则系统会对其进行类型转换,这是隐含转换,转换的原则就是将低类型的数据转换为高类型数据。各类型从低到高依次为char,short,int,unsigned int,long,unsigned long,float,double。类型越高范围越大,精度也越高。隐含转换是安全的,因为没有精度损失。逻辑运算符的操作数必须是bool型,如果不是就需要将其转换为bool型,非0数据转换为true,0转换为false。位运算操作数必须是整数,如果不是也会自动进行类型转换,也是低类型数据转换为高类型数据。赋值运算要求赋值运算符左边的值和右边的值类型相同,不同的话也要进行自动转换,但这个时候不会遵从上面的原则而是一律将右值转换为左值的类型。比如,int iVal; float fVal; double dVal;则dVal=iVal*fVal;计算时先将iVal转换为跟fVal一样的float型,乘法的结果再转换为double型。

       强制类型转换是由类型说明符和括号来实现的,使用形式为:类型说明符(表达式)  或   (类型说明符)表达式。它是将表达式的结果类型强制转换为类型说明符指定的类型。比如,float fVal=1.2;  int iVal = (int)fVal;计算后面表达式的值时会将1.2强制转换成1,舍弃小数部分。

       好了,鸡啄米今天就讲到这里了,又是很重要的基础知识,以后学习中有很多地方会混淆,注意要记牢哦。


http://chatgpt.dhexx.cn/article/ItxtvdVu.shtml

相关文章

鸡啄米:C++编程入门系列之三(VS2010的使用介绍)

转载自&#xff1a;http://www.jizhuomi.com/software/27.html 大家好&#xff0c;鸡啄米上节课给大家讲了原码、反码和补码的知识点。这节课我主要跟大家讲解VS2010的使用方法&#xff0c;并不会面面俱到&#xff0c;我只大概讲下经常会用到的功能。至于其他功能用的不会很多…

linux 命令:ls 详解

用法&#xff1a;ls [OPTION]... [FILE]... 打印关于FILE的信息&#xff08;默认当前目录&#xff09; 以字母表顺序排序&#xff08;如果没有使用-cftuvSUX或者--sort等选项&#xff09;选项&#xff08;OPTION&#xff09;&#xff1a;-a, --all 不隐藏任何以.…

linux的ls命令没反应,Linux:ls命令如何使用

原标题&#xff1a;Linux:ls命令如何使用 1、ls命令可以在Linux中显示出文件和目录&#xff0c;如下图。当然&#xff0c;ls命令不可能只能实现这么简单的操作&#xff0c;下面就通过一些参数来查看ls的其他用法 2、ls -l&#xff0c;使用长清单模式来列出文件和目录&#xff0…

Linux命令ls -l详细信息说明

一、 概述 Linux系统中敲入命令ls -l可以查看目录或文件的详细信息&#xff0c;本文介绍详细信息的组成。 二、 说明 详细说明见下图&#xff1a; 注意&#xff1a; 链接文件的概念类似于windows里的快捷方式。多个链接文件同时指向一个“源文件”。链接文件分为硬链接或软…

Linux ls 命令学习和简单使用

Linux中隐藏文件的特点是文件名以.开头&#xff0c;跟文件属性无关。Linux中查看隐藏文件用ls -a命令查看 ls 命令 1、ls 不带参数&#xff0c;可以列出当前目录下的内容 2、ls -l 可以列出文件的详细信息 3、 ls -a 可以显示当前目录下的隐藏文件 4、ll 与 ll -al 5、ls…

Linux 文件与目录查看命令 ls

Linux 文件与目录查看命令 ls (base) yinjiyinji:~$ ls [-aAdfFhilnrRSt] 文件名或目录名称 (base) yinjiyinji:~$ ls [--color{never,auto,always}] 文件名或目录名称 (base) yinjiyinji:~$ ls [--full-time] 文件名或目录名称 选项与参数&#xff1a; -a : 全部的文件&#x…

linux 命令 ls 与 ls -lrt 的区别

ls -lrt 表示按修改时间倒序列出当前工作目录下的文件。ls -l 表示按名称顺序正序列出当前工作目录下的文件。 1、ls 表示列出当前目录下的文件。后面的 -lrt 是这个命令的一些选项补充。-lrt 实际上是代表了 "-l -r -t" 这三个选项集合。 2、-l -r -t 1&#xf…

linux ls lh每个列,Linux ls命令用法

8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 1、ls命令简介 ls 命令是 Linux 下最常用的命令。ls 命令就是 list 的缩写,缺省下 ls 用来打印出当前目录的清单,如果 ls 指定其他目录,那么就显示指定目录里的文件及文件夹清单。 通过 ls 命…

Linux ls命令返回结果说明

ls 命令用法说明 命令名称&#xff1a;ls 英文原理&#xff1a;list 命令所在路径&#xff1a;/bin/ls 执行权限&#xff1a;所有用户 功能描述&#xff1a;显示目录文件 语法&#xff1a;ls [选项 -aldrtAFR] [文件或目录] 没有带参数则显示当前目录下的目录文件&#x…

Linux中ls -l命令展示信息详解

Linux中ls -l命令展示信息详解 在Linux系统中&#xff0c;ls -l命令是用以列表的形式来查看当前目录下的文件或目录&#xff0c;下面就让我们一起来看看展示的信息是什么意思吧 以CentsOS7为例子 [rootlocalhost mrluo]# ls -l total 0 drwxr-xr-x. 2 mrluo mrluo 22 Dec 19…

linux中ls命令详解

Linux中一个基本命令是ls。没有这个命令&#xff0c;我们会在浏览目录条目时会遇到困难。这个命令必须被每个学习Linux的人知道。 ls是什么 ls命令用于列出文件和目录。默认上&#xff0c;他会列出当前目录的内容。带上参数后&#xff0c;我们可以用ls做更多的事情。这里是一些…

Linux之ls命令

前言 Linux的命令&#xff0c;很多很多&#xff0c;至少三四千条&#xff0c;也是我们学习Linux的基本功&#xff0c;学这部分东西&#xff0c;没什么捷径&#xff0c;两个注意&#xff1a; 1.多用&#xff0c;熟能生巧&#xff0c;用着用着就记住了&#xff0c;至少常用命令要…

每日一个Linux命令之ls命令

每日一个Linux命令之ls命令 1. ls命令简介2. 常见选项 1. ls命令简介 ls命令&#xff08;list&#xff09;可用于列出指定路径下的文件&#xff08;Linux中一切皆文件&#xff0c;目录也是文件的一种&#xff09;&#xff0c;如果不指定路径&#xff0c;单独运行ls命令&#x…

linux命令之ls

1.基本使用 ls //显示不隐藏的文件与文件夹 ls -a //显示当前目录下的所有文件及文件夹包括隐藏的.和…等 ls -l //显示不隐藏的文件与文件夹的详细信息 ls -al //显示当前目录下的所有文件及文件夹包括隐藏的.和…等的详细信息 ls -R //将目录下所有的子目录的文件都列出来…

linux命令ls,显示有高亮的原因

linux命令ls,显示有高亮的原因 平时在linux系统使用ls命令&#xff0c;显示当前目录下的所有的文件&#xff0c;显示的文件结果有高亮。就如下图所示&#xff1a;可以看到&#xff0c;对于目录文件&#xff0c;有蓝色高亮。 但如果我们运行&#xff1a;sudo ls 可以看到这里却…

linux ls分页命令,Linux常用命令之ls

一、命令简介 ls命令是linux下最常用的命令之一&#xff0c;ls跟dos下的dir命令是一样的都是用来列出目录下的文件&#xff0c;下面我们就来一起看看ls的用法&#xff1b; 首先&#xff0c;我们通过命令的帮助来看看ls 命令的用法&#xff1a; 命令格式&#xff1a; ls [选项] …

linux命令功能ls,【Linux】- ls命令详解

1 命令功能: 列出当前目录下或者指定目录下的所有文件和目录,ls是list的缩写。 2 命令语法: ls 【选项】 【目录名】 #注:【】中的内容为非必选项 3 命令选项: -a 列出目录下的所有文件,包含以.开头的隐藏文件。 -A 显示出.和..以外的所有文件。 -d 显示目录的自身属…

【Linux命令】ls命令

【Linux】ls命令 ls 命令是 linux 下最常用的命令。ls 命令就是 list 的缩写&#xff0c;用来打印出当前目录的清单。如果 ls 指定其他目录&#xff0c;那么就会显示指定目录里的文件及文件夹清单。 通过 ls 命令不仅可以查看 linux 文件夹包含的文件&#xff0c;而且可以查看…

Linux基础之命令【ls】

ls是Linux最常用的基础命令ls就是list的缩写&#xff0c;ls不仅仅可以查看文件夹内容还可以查看&#xff08;目录&#xff0c;权限&#xff09;等…ls用法如下&#xff1a; 1.命令格式&#xff1a; ls[参数][目录名字] 2.命令功能&#xff1a; 列出目录中所有子目录和文件 3…

7.13RHCSA作业

1.命令帮助 man [指令] [page down]向下翻页[page up]向上翻页[home]第一页[end]最后一页 上下键翻动页面 [指令]--help info 2.关机&#xff0c;重启&#xff0c;注销 shutdown--关机指令 -r重启 poweroff--关机 reboot--重启系统 3.常用命令 pwd--显示当前所在目…