工业三废处理方法的四个优先级的顺序如何?为什么?

C/C++表达式求值顺序优先级详解
表达式求值顺序不同于运算结合性和优先级。下面是一个经典例子,被 ISO C99/ C
98 /03 三大标准明确提到:他的结果是不确定(unspecified) 的。i =
1;&& // The behavior is unspecified&&& 在介绍概念之前,我们先解释一下它的结果。这个表达式( expression )包含3个子表达式( subexpression ):e1 =&
1i = e2&&& 这三个子表达式都没有顺序点( sequence point ),而
i& 和 i = e3 都是有副作用( side effect )的表达式。由于没有顺序点,语言不保证这两个副作用的顺序。
&& 更加可怕的是,如果i 是一个内建类型,并在下一个顺序点之前被改写超过一次,那么结果是未定义(undefined)的!比如本例中如果有:
int i = 0x1000i =
1;&&&&& // The result is undefined!!
&& 你也许会认为他的结果是加1 或者加2,其实更糟糕 ―― 结果可能是 0x1001ffff 。他的高字节接受了一个副作用的内容,而低字节则接受了另一个副作用的内容! 如果i 是指针,那么将很容易造成程序崩溃。
&& 为什么要这么做呢?因为对于编译器提供商来说,未确定的顺序对优化有相当重要的作用。比如,一个常见的优化策略是“减少寄存器占用和临时对象”。编译器可以重新组织表达式的求值,以便尽量不使用额外的寄存器以及临时变量。 更加严格的说,即使是编译器提供商也无法完全彻底序列化指令(比如无法严格规定读和写的顺序),因为CPU本身有权利修改指令顺序,以便达到更高的速度。
&& 下面的术语以 ISO C99 和 C
03为准。译名为参考并附带原术语对照,如有解释不当或者错误望指正。
--------------------------------------------------------------------------------
&& 表达式有两种功能。每个表达式都产生一个值( value ),同时可能包含副作用( side effect ),比如:他可能修改某些值。
&&& 规则的核心在于 顺序点( sequence point ) [ C99 6.5 Expressions 条款2 ] [ C
03 5 Expressions 概述 条款4 ]。 这是一个结算点,语言要求这一侧的求值和副作用(除了临时对象的销毁以外)全部完成,才能进入下面的部分。 C/C
中大部分表达式都没有顺序点,只有下面五种表达式有:
1 函数。函数调用之前有一个求值顺序点。
2 &&& || 和 ?:& 这三个包含逻辑的表达式。其左侧逻辑完成后有一个求值顺序点。
3 逗号表达式。逗号左侧有一个求值顺序点。
&&& 注意,他们都只有一个求值顺序点,2和3的右侧运算结束后并没有求值顺序点。
&&& 在两个顺序点之间,子表达式求值和副作用的顺序是不确定的。假如代码的结果与求值和副作用发生顺序相关,我们称这样的代码有不确定的行为 (unspecified behavior)。 而且,假如期间对一个内建类型执行一次以上的写操作,则是未定义行为(undefined behavior)――我们知道,未定义行为带来最好的后果是让你的程序立即崩掉。
n =&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 两个副作用,对于内建对象产生是未定义行为&&& 几乎所有表达式,求值顺序都不确定。比如,下面的加法, f1 f2 f3的调用顺序是任意的:
f3();&&&&&&&&&&& // f1 f2 f3 调用顺序任意&&& 而函数也只在实际调用前有一个求值顺序点。所以,常见于早期 C 语言教材的这类题目,是错题:
printf("%d",--a b,--b a);&&& // --a
a 这两个子表达式,求值顺序不确定&&& 天啊,甚至可能出现未定义行为?那么坚决不写与实现相关的代码是最好的对策。即使是不确定行为(比如函数调用时) 只要没有顺序点编译器怎么做方便就怎么做。 有些人认为函数调用参数求值与入栈顺序相关,这是一种误导。这个东西要解释,无异于事后诸葛亮:void f( int i1, int i2, int i3, int i4 ){& cout&& i1 &&
&& i4 &&}int main(){& int i = 0;& f( i
&&& 这个有四个表达式求值,同时每个表达式都有负作用。这八个操作顺序是任意的,那么结果如何?未定义。
&&& 请用 VC7.1 Debug和 Release 分别测试这同一份代码,结果是不同的:
0 0 0 0&&& [release]3 2 1 0&&& [debug]
&&& 事实上,鉴于前面的讨论,如果换一些其他初始值,这里甚至会出现错位而得到千奇百怪的诡异结果。
&&& 再看看C/C
标准中的其他经典例子:
&&&& [C99] 6.5.2.2 Function call&&& 条款12 EXAMPLE 在下面的函数调用中:
(*pf[f1()])& ( f2(), f3()
&&& 函数 f1 f2 f3 和f4 可能以任何顺序被调用。 但是,所有副作用都必须在那个 pf[ f1() ] 返回的函数指针产生的调用前完成。
03] 5 Expressions 概论4
];&&&&&&& // the behavior is unspecifiedi = 7, i
, // i becomes 9 ( 译注: 赋值表达式比逗号表达式优先级高 )
1;&&&&& // the behavior is unspecifiedi = i
1;&&&&&&&&&& // the value of i is incremented
--------------------------------------------------------------------------------
& More Effective C
告诫我们, 千万不要重载 &&, || 和, 操作符[ MEC ,条款7 ]。为什么?
&&& 以逗号操作符为例,每个逗号左侧有一个求值顺序点。假如ar是一个普通的对象,下面的做法是无歧义的:ar[ i ],
&&& 但是,如果ar[ i ] 返回一个 class A 对象或引用,而它重载了 operator,& 那么结果不妙了。那么,上面的语句实际上是一个函数调用:ar[ i ].operator, (
中,函数只在调用前有一个求值顺序点。所以 ar[i] 和
i 的求值、以及
i 副作用的顺序是任意的。这会引起混乱。
&&& 更可怕的是,重载 && 和 || 。 大家已经习惯了其速死算法: 如果左侧求值已经决定了最终结果,则右侧不会被求值。而且大家很依赖这个行为,比如是C风格字符串拷贝常常这样写:while( p && *p )&&& *pd
&&& 假如p 为 0, 那么 *p 的行为是未定义的,可能令程序崩溃。 而 && 的求值顺序避免了这一点。 但是,如果我们重载 && 就等于下面的做法:exp1 .operator && ( exp2 )&&& 现在不仅仅是求值混乱了。无论exp1是什么结果,exp2 必然会被求值。组策略的应用顺序和生效的优先级是怎么样的?_百度知道
组策略的应用顺序和生效的优先级是怎么样的?
组策略应用顺序效优先级
提问者采纳
组策略设置按列顺序进行处理:1.本组策略象 — 每台计算机都本存储组策略象于计算机或用户策略处理都处理该内容2.站点 — 接要处理任何已经链接计算机所属站点 GPO处理顺序由管理员组策略管理控制台 (GPMC) 该站点链接组策略象选项卡内指定链接顺序低 GPO 处理具高优先级3.域 — 域链接 GPO 处理顺序由管理员 GPMC 该域链接组策略象选项卡内指定链接顺序低 GPO 处理具高优先级4.组织单位 — 链接 Active Directory 层结构高层组织单位 GPO 先处理链接其组织单位 GPO依类推处理链接包含该用户或计算机组织单位 GPO
其他类似问题
为您推荐:
组策略的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁本文章简略的介绍了化学工艺基础知识中的教学流程和教学方法,可以作为高校教师的..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
化学工艺基础知识教案
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口当同一债权上的担保中,人保和财产保并存时,应当如何认定保证责任的顺序或优先级?_百度知道
当同一债权上的担保中,人保和财产保并存时,应当如何认定保证责任的顺序或优先级?
应该按照约定,否则,债权人可以选择。法律依据是担保法和司法解释:
《最高人民法院关于适用《中华人民共和国担保法》若干问题的解释》第三十八条: 同一债权既有保证又有第三人提供物的担保的,债权人可以请求保证人或者物的担保人承担担保责任。当事人对保证担保的范围或者物的担保的范围没有约定或者约定不明的,承担了担保责任的担保人,可以向债务人追偿,也可以要求其他担保人清偿其应当分担的份额。同一债权既有保证又有物的担保的,物的担保合同被确认无效或者被撤销,或者担保物因不可抗力的原因灭失而没有代位物的,保证人仍应当按合同的约定或者法律的规定承担保证责任。
债权人在主合同履行期届满后怠于行使担保物权,致使担保物的价值减少或者毁损、灭失的,视为债权人放弃部分或者全部物的担保。保证人在债权人放弃权利的范围内减轻或者免除保证责任。
其他类似问题
为您推荐:
提问者采纳
物权第百七十六条 担保债权既物担保担保债务履行期债务或者发事约定实现担保物权情形债权应按照约定实现债权;没约定或者约定明确债务自提供物担保债权应先该物担保实现债权;第三提供物担保债权物担保实现债权要求保证承担保证责任提供担保第三承担担保责任权向债务追偿
优先级的相关知识
其他2条回答
先对担保的物变价,所得价款不足以实现债权的,余下部分由保证人与债务人承担连带责任。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁MCS51的中断系统中断优先级如何控制?中断优先级中断申请时CPU按什么顺序相应?中断源入口地址多少?_百度知道
MCS51的中断系统中断优先级如何控制?中断优先级中断申请时CPU按什么顺序相应?中断源入口地址多少?
提问者采纳
用IP控制同级别先高低同级别先INT0、再 T0、 再INT1、其 T1 、串行通信INT0 0003H
串行通信 0023H
提问者评价
其他类似问题
为您推荐:
中断优先级的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 工业三废处理方法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信