天空小小岛技术论坛

 找回密码
 注册
搜索
查看: 2244|回复: 0
打印 上一主题 下一主题

C语言/php的运算符优先级(结合性)

[复制链接]
跳转到指定楼层
1#
八号 发表于 2013-11-7 15:04:05 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
* 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 */
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|天空小小岛  |京ICP备2025130156号|

GMT+8, 2025-6-22 04:19 , Processed in 0.087983 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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