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 */
分享到:
相关推荐
C语言运算符优先级和结合性表,全面介绍了C语言运算符的优先级和结合性。
对C语言中运算符的优先级与结合性进行了细致的排列比较。
C语言所有运算符的优先级与结合性,很实用的查询表
运算符的优先级每种语言里应该都是差不多的,当然了有的语言中有一些特殊的运算符,比如在 C 语言中有 & 和 * ...而对于算术运算、逻辑运算等,基本上都是有的,而这些运算符的优先级和结合性应该每种语言都是相同的。
C语言 运算符优先级结合性
C语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。C语言还规定了各种运算符的结合方向,众所周知的是,算术运算符的结合方式为“自左向右”,即先左后右,...
C语言运算符优先级和结合性
单片机C语言运算符优先级及结合性
C语言运算符及其优先级汇总表口诀 圆下箭头一顿号 非凡增减富强针地长 三乘除,四加减,五移位 千万别把鱼忘记,它在盛饭的厨子里 小灯大灯灯灯不等 爸喂鱼,舅疑惑,裸鸡也疑惑 十三姨,十四父,十五...
C语言中,运算符的运算优先级共分为15 级。1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。... 结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。
C语言运算符优先级 在C语言中,运算符优先级定义了表达式中运算符的计算顺序。当一个表达式中有多个运算符时,高优先级的运算符会先被计算。如果运算符具有相同的优先级,那么运算符的结合性(从左到右或从右到左)...
单片机C语言运算符优先级及结合性[借鉴].pdf
不知道C语言运算符的优先级和结合性?那就下载这个吧
C语言运算符类别结合性及优先级,文档介绍C语言中运算符的结合性以及优先级次序
C语言运算符的优先级和结合性一览表(打印版),精心排版,可打印A4纸,C语言编程必备。
运算符的优先级和结合性
本文主要介绍C语言运算符的知识,这里对运算符的优先级和结合性做出了详解,并附实例代码,希望能帮助有需要的小伙伴
这个压缩包包括有C语言中常用到的ASCII码对照表,运算符的优先性和结合性,C语言常用的库函数,本想着免费分享(最低资源分2).......