广州达内作为达内集团60多家培训中的一个,已成为了广州IT培训的领头羊,通过标准化的培训,让实战少的学生完美蜕变成为软件开发职场精英人才,成功帮助学员收获名企offer。(转载于:http://www.gdtarena.com)
  副作用(sideeffect)表达式有两种功能:每个表达式都产生一个值(value),同时可能包含副作用(sideeffect)。副作用是指改变了某些变量的值。

  如:

  1:20//这个表达式的值是20;它没有副作用,因为它没有改变任何变量的值。

  2:x=5//这个表达式的值是5;它有一个副作用,因为它改变了变量x的值。

  3:x=y++//这个表示有两个副作用,因为改变了两个变量的值。

  4:x=x++//这个表单时也有两个副作用,因为变量x的值发生了两次改变。

  二.求值顺序点表达式求值规则的核心在于顺序点(sequencepoint)[C996.5Expressions条款2][C++035Expressions概述条款4]。

  顺序点的意思是在一系列步骤中的一个“结算”的点,语言要求这一时刻的求值和副作用全部完成,才能进入下面的部分。在C/C++中只有以下几种存在顺序点:

  1)分号;2)未重载的逗号运算符的左操作数赋值之后(即','处)3)未重载的'||'运算符的左操作数赋值之后(即'||'处);4)未重载的'&&'运算符的左操作数赋值之后(即“&&”处);5)三元运算符'?:'的左操作数赋值之后(即'?'处);6)在函数所有参数赋值之后但在函数第一条语句执行之前;7)在函数返回值已拷贝给调用者之后但在该函数之外的代码执行之前;8)每个基类和成员初始化之后;9)在每一个完整的变量声明处有一个顺序点,例如inti,j;中逗号和分号处分别有一个顺序点;10)for循环控制条件中的两个分号处各有一个顺序点。

  对于任意一个顺序点,它之前的所有副作用都已经完成,它之后的所有副作用都尚未发生。

  在两个顺序点之间,子表达式求值和副作用的顺序是不同步的。如果代码的结果与求值和副作用发生顺序相关,称这样的代码有不确定的行为(unspecifiedbehavior).而且,假如期间对一个内建类型执行一次以上的写操作,则是未定义行为.

  任意两个顺序点之间的副作用的发生顺序都是未定义的.

  如:

  x=x++;该表达式只有一个顺序点,在该顺序点之前有2个副作用,一个是自增,一个赋值,这两个副作用发生的顺序是未定义的,即自增运算和赋值运算哪一个先执行是没有被定义的(注意这个顺序跟运算符的优先级是无关的,注意理解运算符优先级的含义),这个执行次序交由编译器厂商去自行决定,因此对于不同的编译器可能会得出不同的结果。

  #include<stdio.h>

  #include<stdlib.h>

  intmain(intargc,char*argv[]){inti=0;intm=(++i)+(++i)+(++i)+(++i);printf("%d%d ",m,i);system("pause");return0;}收藏至我的CND8点这里查看更多C/C++教程相关教程:

  什么是迭代跟递归算法?二者有什么区别?[组图]

  C++:虚函数与抽象类如何在C#中webservice调用方法总结Linux 下的多进程编程《用做好的Excel報表模板來做報表》[图]

  Awk 基础入门:Awk 实例编程使用epoll进行高性能网络编程API之打印函数函数调用,__stdcall,__cdecl,__fastcall,thiscall,naked call,__pascalUDP编程最新教程:

  新手入门应注意C,C++,C#的问题新手入门:C/C++中的结构体,大家好好看看C#实现Web文件上传的两种好方法sizeof的使用方法 详细为你解析C语言中的sizeofc/c++中指针学习的两个最好方法 和例子无废话C#设计模式之八:Facade(2)无废话C#设计模式之八:Facade在C3.0中使用扩展方法来扩展接口C#实现Windows服务的制作安装和删除(3)C#3.0中实现隐式类型变量匿名类型的方法热门资讯:

  各国领导人所用手机一览2013年腾讯智慧峰会上海站今天盛大开幕微软继续吐槽:建页面比较Win8平板与iPad索尼电子业务遭零估值 彻底丢弃硬件明天会更好国内国外都能用 中国移动Jego网络电话App体验6月底发布 6.4寸屏索尼Xperia L4真机泄露6.5mm超薄机身 索尼6.44寸巨屏手机Xperia ZU曝光钢铁侠背后的女人 马斯克发妻讲述离婚历程索尼Xperia ZU参数曝光 将拥有6.44英寸显示屏男子网吧玩电游身亡 尸体在侧众玩家照打游戏最新资讯游戏行业移动游戏一枝独秀Rovio任命诺基亚前高管为公司新任COO六大理由表明玩家更喜欢PS4而非Xbox One评论:iOS 7对解决苹果的商业问题毫无帮助作用微软借E3展会重新赢回玩家 赋予游戏新玩法梅尔沃德:全球最富专利流氓还是创新之王?

  苹果5大创意“抄袭”谷歌、Twitter、微软好消息,苹果开始冒险了!

  刘启诚:iOS7欲颠覆却无创新 苹果颓势难挽Xbox One亚洲市场推出时间延迟至2014年
知识就是力量,别人学用知识来赚钱的成本低,在达内学习到编程是铸造梦想的地方,如果你喜欢编程,这里,有我们共同语言,共同的故事,共同的梦想!
(责任编辑:广州达内)

C/C++求值顺序点和 副作用表达式讲解相关推荐

  1. 【编译原理笔记08】语法制导翻译:语法制导定义,SSD的求值顺序,S属性定义与L属性定义

    本次笔记内容: 5-1 语法制导翻译概述 5-2 语法制导定义 5-3 SSD的求值顺序 5-4 S属性定义与L属性定义 本节课幻灯片,见于我的 GitHub 仓库:第8讲 语法制导翻译_1 文章目录 ...

  2. 连续赋值与求值顺序var a = {n:1};a.x = a = {n:2}; alert(a.x);

    连续赋值与求值顺序var a = {n:1};a.x = a = {n:2}; alert(a.x);

  3. C技能树:运算符优先级与求值顺序

    选项中是关于逗号运算符与自增运算符组成的混合表达式,请运用运算符优先级及求值顺序相关知识,选择合适的选项填在(1)处,使得程序的输出结果为 2,3,1. #include <stdio.h> ...

  4. c++中函数参数的求值顺序

    c++中如果函数的参数列表包含多个实参,那么对参数的求值顺序是不确定的. 在谭浩强的<C++程序设计>(第二版)P94中提到,GCC对参数求值是按从右到左的顺序求值的. 但我实测并非如此. ...

  5. C++运算表达式求值顺序

    求值顺序 优先级虽然规定了运算对象的组合方式,但是没有说明运算对象按照什么顺序求值.例如: int i=f1()*f2();//我们不知道先求f1还是先求f2,倘若f1和f2指向并修改了同一对象,则会 ...

  6. python关键字参数顺序_位置参数和关键字参数的求值顺序

    Python 2.7 如果我们看一下与为函数调用创建AST(^{})相关的CPython源代码,那么参数求值的顺序是:return Call(func, args, keywords, vararg, ...

  7. 用python编写表达式求值_用Python3实现表达式求值

    Problem Description yizhen has no girlfriend due to his stupid brain that he even can't solve a simp ...

  8. python作业表达式求值_用Python3实现表达式求值

    一.题目描述 请用 python3编写一个计算器的控制台程序,支持加减乘除.乘方.括号.小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算. 二.输入描述 ...

  9. python输入数学表达式并求值_用Python3实现表达式求值

    一.题目描述 请用 python3编写一个计算器的控制台程序,支持加减乘除.乘方.括号.小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算. 二.输入描述 ...

最新文章

  1. linux 进程创建 进程启动 监控
  2. 二进制安装mysql集群_基于二进制安装Cloudera Manager集群
  3. (转)二分图最大匹配的König定理及其证明
  4. angular之DI理解
  5. gerber文件_90%的工程师容易忽视(一):PCB输出gerber文件,这样操作才正确!
  6. python heapq_Python成为专业人士笔记–Heapq 堆操作
  7. 根据成交量变化寻找黑马
  8. 【Oracle】恢复重做日志组
  9. iOS - JSON 数据解析
  10. 基于MATLAB的路径规划算法
  11. 模型预测控制的缺点_模型预测控制MPC的通俗解释
  12. Android 通过usb调用高拍仪进行拍照
  13. Either类java_基于Java8的Either类
  14. UVa 12304 2D Geometry 110 in 1!(圆的处理)
  15. Ubuntu 下配置 Typora 图片上传到 smms
  16. Python+Excel数据分析实战:军事体能考核成绩评定(一)项目概况
  17. 初识Grad-CAM
  18. mysql数据库密码破解方法
  19. HTMLCSS 高级表格 合并单元格
  20. 2012-11-21四六级词汇#9312;-----…

热门文章

  1. 谈谈信息安全入门这事 New Address
  2. Rot.js 随机地牢,迷宫地图生成
  3. Android产品研发(八)--App数据统计
  4. 解决ffmpeg Dequeued v4l2 buffer contains 4177920 bytes, but 4147200 were expected
  5. 【有利可图网】实用!关于PS AI CDR 的格式互转教程!
  6. ubuntu11.10 开机启动项 设置
  7. 江西地区媒体邀约资源现场官方直播推荐
  8. 南瑞rt21系统服务器,RT21-SCADA在轨道交通电力监控系统中应用
  9. 【计算机网络课程设计】TCP协议包自动生成工具【蒙混过关版】
  10. 验证集和测试集有什么区别?