C++----表达式
来源:互联网 发布:微信手机商城源码 编辑:程序博客网 时间:2024/06/05 21:49
求值顺序
运算对象的求值顺序与优先级和集合率无关,在一条形如f()+g()*h()+j()的表达式中:
- 优先级规定,g()的返回值和h()的返回值相乘
- 结合律规定,f()的返回值先与g()和h()的乘积相加,所得结果再与j()的返回值相加
- 对于这些函数的调用顺序没有明确规定
所以如果这几个函数影响同一对象,则它是一条错误的表达式,将产生未定义的行为。
C++中只有4种运算符明确规定了运算对象的求值顺序,分别是&&、 ||、 ?:、 , 。
成员访问运算符
点运算符和箭头运算符都可用于访问成员,其中,点运算符获取对象的一个成员;箭头运算符与点运算符有关,表达式
因为解引用运算符的优先级低于点运算符,所以执行解引用运算符的子表达式两端必加上括号。如果没有加括号,就错啦:
//运行p的成员size,然后解引用size的结果*p.size(); //错误,p是一个指针,它没有名为size的成员
移位运算符(又叫IO运算符)
移位运算符满足左结合率。几乎所有人都用过<<的重载版本来进行IO操作吧~
我们重载运算符时,其包括运算对象的类型和返回值的类型,都是由该运算符定义的;但是运算对象的个数、运算的优先级和结合律都是无法改变的。
移位运算符的优先级不高不低,介于中间:比算术运算符的优先级低,但是比关系运算符、赋值运算符和条件运算符高。
cout<<42+10;cout<<(10<42);cout<<10<42;//错误,试图比较cout和42!
阅读全文
0 0
- 【C#】表达式
- C++----表达式
- 【C】表达式
- 【c/c++】Lambda表达式
- 表达式求值(C/C++)
- 正则表达式(C#)
- C#中的规则表达式
- C#中的规则表达式
- 正则表达式之C#
- C#中的正则表达式
- 正则表达式(linux/C++)
- C 规则表达式入门
- C#中的规则表达式
- C的正则表达式
- C 规则表达式入门
- C语言 算术表达式
- c语言条件表达式
- c#正则表达式
- 深入学习BroadcastReceiver
- mysql密码过期的修改方法(your password has expired)
- Gitlab实现项目版本管理
- cdh搭建
- jdk1.7之ArrayList
- C++----表达式
- TCP/IP 协议栈及 OSI 参考模型详解
- 查看mysql表是如何被创建的
- Logstash日志收集实践
- pandas map()用法
- 563. Binary Tree Tilt
- node事件监听当中的on和addListener的区别
- angularjs
- 买装备(dp,背包)