介绍由语言本身定义、并用于内置类型运算对象的运算符,同时简单介绍几种标准库定义的运算符。

第四章 表达式

基础概念

  • 一元运算符:作用于一个运算对象的运算符

  • 二元运算符:作用于两个运算对象的运算符

  • 函数调用也是一种特殊的运算符,它对运算对象的数量没有限制

  • 左值:当对象被当做左值的时候,用的是对象的身份(在内存中的位置)。

  • 右值:当一个对象被当做右值的时候,用的是对象的值(内容)。

求值顺序

  • 在大多数情况下,不会明确指定求值顺序。只有四种运算符明确规定可运算对象的求值顺序:

    1. 逻辑与运算符(&&):先求左侧才求右侧,只有当左侧为真时才计算右侧的值2. 逻辑或运算符(||)3. 条件运算符(?:)4. 逗号运算符(,)

算术运算符

bool b = true;bool b2 = -b;   //b2是true。-1不等于0,所以b2的值为真
  • C++11规定,商一律向0取整(即直接切除小数部分)。

  • 若m%n不等于0,则它的符号和m相同:

    (-m)/n 和 m/(-n) 都等于 -(m/n)m%(-n) 等于 m%n(-m)%n 等于 -(m%n)

逻辑和关系运算符

关系运算符作用于算术或指针类型,逻辑运算符作用于任意能转换成布尔值的类型。
- 它们的返回值都是布尔类型。

逻辑与 &&、 逻辑或 ||

  • 短路求值(short-circuit evaluation)

关系运算符

关系运算符的求值结果是布尔值,连在一起用会产生意想不到的结果:

if(i < j < k)   //若k大于1则为真

应改为:

if(i < j && j < k)

赋值运算符

  • 赋值运算符飞左侧运算对象必须是一个可修改的左值。

  • 如果赋值运算符的左右两个运算对象类型不同,则右侧运算对象将转换成左侧运算对象的类型。

赋值运算满足右结合律

int i, j;i = j = 0;  //正确,都被赋值为0

条件运算符 ?:

cond ? expr1 : expr2

满足右结合律,运算对象一般按照从右向左的顺序组合。

位运算符

作用于整数类型的运算对象,以及一种名为bitset的标准库类型的运算对象。

~   :位求反<<  :左移>>  :右移&   :位与^   :位异或|   :位或

sizeof运算符

返回所占字节数,所得值是一个size_t类型。

有如下两种形式:sizeof(type)sizeof expr
  • 满足右结合律。

类型转换

隐式类型转换

大多数情况下数组转换成指针
- 当数组被用作decltype关键字参数,或者作为取址符(&)、sizeof及typeid等运算符的运算对象时,上述转换不会发生。

显示转换

  • 命名的强制类型转换

cast-name<type>(expression)

cast-name有如下几种:

dynamic_cast        //运行时类型识别static_cast         //只要不包含底层const,均可进行强制类型转换,告诉编译器不在乎精度损失const_cast          //只能改变运算对象的底层const,称为去掉cast性质(cast away the const)。将常量对象转换为非常量对象。reinterpret_cast    //

参考:C++Primer第五版

介绍由语言本身定义、并用于内置类型运算对象的运算符,同时简单介绍几种标准库定义的运算符。

相关文章:

第一章C++:函数返回值、GNU编译器命令

第二章C++:变量和基本类型

更多相关文章

  1. C#使用Newtonsoft的Json.NET进行对象的序列化与反序列化
  2. 关于C++中string类对象的用法总结
  3. 如何使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新
  4. C#如何使用Reflect获取dll文件中的类型并调用?
  5. C++总结:面向对象的基本概念
  6. C#中的数据类型是什么?C#中的四种数据类型解释
  7. c语言简单数据类型有哪些
  8. 在C++中对象如何作为参数传递和返回?(代码示例)
  9. C#学习之面向对象如何调用类以及普通方法、静态方法的使用

随机推荐

  1. jQuery Mobile,在不使用data-position =“
  2. 文字效果 - 图像到css / jQuery
  3. JQuery 总结(3) jQuery 各种事件
  4. 【jQuery】判断浏览器类型和版本
  5. Asp。NET MVC Ajax-Post表单和Ajax-Get
  6. Chosen 基于jquery的选择框插件使用方法
  7. 如何在jquery中获取textarea的值?
  8. 如何在Rails 4(使用jquery)中上传多个文
  9. 《JQuery——插件的开发和使用(二)之qTip2
  10. jQuery并在回调中解析JSON