设为首页 收藏本站
查看: 580|回复: 0

[经验分享] [快速记忆]C语言/php的运算符优先级(结合性)

[复制链接]

尚未签到

发表于 2017-4-12 12:05:34 | 显示全部楼层 |阅读模式
  author: selfimpr
  blog: http://blog.csdn.net/lgg201
  mail: lgg860911@yahoo.com.cn
  

  阅读<C陷阱与缺陷>, 看到书中对优先级记忆的精彩讲解, 总结下表.
  另由于是php程序员, 所以对php的对应优先级做类似分析.
  最后是用php和c中的?:结合性的不同解释"结合性"的问题.
  不正确的地方请各位指出.
  


* C语言运算符优先级(共计15个等级)
1. 非运算符(函数调用, 复合数据结构取元素): "()", "[]", "->", "."
2. 单目运算符: "!", "~", "++", "--", "-", "(type)"(类型转换), "*", "&", "sizeof"
3. 双目运算符:
1) 算术运算符:
a) 乘除: "*", "/", "%"
b) 加减: "+", "-"
2) 移位运算符: "<<", ">>"
3) 关系运算符:
a) 大小比较: "<", "<=", ">", ">="
b) 相等比较: "==", "!="
4) 逻辑运算符:
a) 按位逻辑运算符:
* 按位与: "&"
* 按位异或: "^"
* 按位或: "|"
b) 顺序逻辑运算符:
* 短路与: "&&"
* 短路或: "||"
4. 三目运算符: "?:"
5. 赋值运算符: "=", "*=", "/=", "%=", "+=", "-=", ...等等
6. 逗号运算符: ","
* C语言运算符结合性:
1. 右结合: 单目运算符, 三目运算符, 赋值运算符
2. 左结合: 第一条未列出所有运算符为左结合

* php运算符优先级(共计22个等级)
1. 非运算符(复合数据结构取元素, 特殊运算符):
1) 对象创建: "clone", "new"
2) 取复合结构元素: "[]"
2. 单目运算符:
1) 自增自减: "++", "--"
2) 类型转换, 错误抑制符, 取反运算符, 负号: "(type)"(类型转换), "@", "~", "-"
3) 类型判定符: "instanceof"
4) 逻辑非: "!"
3. 双目运算符:
1) 算术运算符:
a) 乘除: "*", "/", "%"
b) 加减: "+", "-"
2) 移位运算符: "<<", ">>"
3) 关系运算符:
a) 大小比较: "<", "<=", ">", ">="
b) 相等比较: "==", "!=", "===", "!=="
4) 逻辑运算符:
a) 按位逻辑运算符:
* 按位与: "&"
* 按位异或: "^"
* 按位或: "|"
b) 顺序逻辑运算符:
* 短路与: "&&"
* 短路或: "||"
4. 三目运算符: "?:"
5. 赋值运算符: "=", "*=", "/=", "%=", "+=", "-=", ...等等
6. 低优先级逻辑运算符:
* 与: "and"
* 异或: "xor"
* 或: "or"
7. 逗号运算符: ","
* php运算符结合性:
1. 无结合性: 对象创建, 自增自减, 类型判定符, 关系运算符
2. 右结合: 第一条中没有列出的单目运算符, 赋值运算符
3. 左结合: 前面两条未列出的所有运算符均为左结合

* C语言和PHP中的三目运算符结合性差异比较
1. C语言中"?:"为右结合
2. php中"?:"为左结合
3. 实例: printf("%d\n", 1 ? 2 : 3 ? 4 : 5);
1) C语言中解析: 先运算最后一个"?:", 将最后一个?之前的表达式看作整体
printf("%d\n", (1 ? 2 : 3) ? 4 : 5);
/* 结果: 4 */
2) php中解析: 先运算第一个"?:", 将第一个:之后的表达式看作整体
printf("%d\n", 1 ? 2 : (3 ? 4 : 5));
/* 结果: 2 */

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-363938-1-1.html 上篇帖子: BasicPHP-FF "BF框架" 超超超轻量级开源PHP框架 下篇帖子: php学习笔记(十五)验证码类的编写和使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表