ad

《C++程序开发案例课堂》_了解C++的更好途径_4.1.5 自增和自减运算符

admin 68 2023-11-01

【摘要】 本书摘自《C++程序开发案例课堂》书中第4章,第1节,由刘春茂、李琪编著。

4.1.5 自增和自减运算符

在 C++ 中,提供了两个比较特殊的运算符:自增运算符++和自减运算符一,对变量的操 作结果是为整型变量加1和减1。

虽然,++和-运算符解释起来非常简单,但是将它放到变量前面和后面的含义有所不 同。下面举个例子来说明:

“a=++numl;” 这总的来看是一个赋值语句,把++num1 的值赋给 a, 因为自增运算符在 变量的前面,所以num1 先自增加1变为5,然后赋值给a, 最 终a 也为5。

《C++程序开发案例课堂》_了解C++的更好途径_4.1.5 自增和自减运算符

“b=num2++;” 这是把 num2++ 的值赋给 b, 因为自增运算符在变量的后面,所以先把 num2 赋值给b,b 应该为8,然后num2 自增加1变为9。

如果出现下面的情况:

c=num1+++num2;

到底是 “c=(numl++)+num2;” 还 是 “c=numl+(++num2);”, 这要根据编译器来决定,不同的 编译器可能有不同的结果。所以在以后的编程中,应该尽量避免出现这种复杂的情况。

下面使用一个实例来说明自增和自减运算符的使用方法。

【例4-5】自增自减(代码4-5.txt)。

新建名为 zztest 的C++Source File 源程序。源代码如下:

【代码剖析】

在这个例子中,首先定义 int 型变量 a 并赋值为10,定义 int 型变量 flag 并赋值为 a, 然后 a 再自加1;先输出 flag, 再输出 a; 先将 a 自加1,赋值给flag, 输出flag。将a输出,再自减1。

运行结果如图4-5所示。

从结果来看,使用“++”和“-- ”对 a 进行了自增和自减操作,验证了自增和自减的功能。

4.1.6 位 逻 辑 运 算 符

前面介绍了逻辑运算符,本节介绍一下位逻辑运算符。位逻辑运算符与逻辑运算符有些 相似之处,它也分为与、或、非等。

位逻辑运算符是对每位进行操作而不影响左右两位,这有别于常规逻辑运算符,常规逻 辑运算符是将整个数进行操作的。表4-5列出了位逻辑运算符及其功能。

例如:

~(10011010)=(01100101)

按位取反时,如果操作数不是32位,会自动转为32位进行取反。

2.&按位取与

只有两个操作数都是1时结果才是1,否则为0。

3. |按位取或

两个操作数任意一位为1,结果就是1。

4. A 按位异或

两个操作数不同为1,相同为0。

下面使用一个实例来说明如何运算。

【例4-6】使用位逻辑运算符(代码4-6.txt)。

新建名为wtest 的C++ Source File 源程序。源代码如下:

【代码剖析】

在该例的主程序中,首先定义 int 型变量 a 并赋值为10,定义int型变量b 并赋值为12。定义 int型变量 flag 并赋值为“a 按位取反”,输出 flag; 给flag 赋值“a 按位与b”, 输出 flag; 给 flag 赋值“a按位或 b”, 输出 flag; 给 flag 赋值“a 按位异或

b”, 输出 flag。

图4-6 使用位逻辑运算符

运行结果如图4-6所示。

从整个示例来看,对4种按位逻辑运算操作,验证了按位逻辑运算功能。

4.1.7 移位运算符

在 C++ 中,移位运算符为双目移位运算符,有<<(左移)和>>(右移)。移位运算符组成的表 达式也属于算术表达式,其值为算术值。

左移运算是将一个二进制位的操作数按指定移动的位数向左移位,移出位被丢弃,右边 的空位一律补0。右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被 丢弃,左边移出的空位或者一律补0,或者补符号位,这由不同的机器而定。在使用补码作为 机器数的机器中,正数的符号位为0,负数的符号位为1。

在 C/C++ 语言中,移位操作不要超过界限,否则,结果是不可预期的。

下面通过一个实例来说明按位移动的使用方法。

【例4-7】使用移位运算符(代码4-7.txt)。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 [email protected] 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《C++程序开发案例课堂》_了解C++的更好途径_10.7.2 静态成员函数
下一篇:《C++程序开发案例课堂》_了解C++的更好途径_10.3 成员函数
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×