在这里还想提一件事
影响复杂表达式的三个主要因素
它可以分为三类
优先级 结合性 是否控制求值顺序
1.优先级在这里不作说明 详见各类书籍的优先级表
2.结合性即 L-R 和 R-L 两种计算顺序
3. 是否控制求值顺序 此项比较特殊 主要运用于逻辑计算( && || ,)
举个栗子
int i = 0 , a = 0, b = 2, c = 3, d = 4;
i = a++ && ++b && d++;
上述code执行后 a b c d 的结果是什么?
1 2 3 4
出人意料吧
第一个 a++ 的结果为a自增 但此表达式由于++在后的特点 a此时的值依然为0 &&中有0为0
固后面的表达式 不用计算
所以得到1234的结构
这就是是否控制求值顺序
#################################################################################
最近C语言的学习过程中对于操作符的使用越来越多 所以想来总结总结下
C语言的操作符细分下来应该有
算术操作符(+ - * % /) |
移位操作符(<<二进制移位有x2的效果 >>二进制移位有/2的效果) |
位操作符(& 有0为0 | 有1为1 ^ 按二进制位异或 不同为1 相同为0 ) |
赋值操作符(此处的赋值操作符存在复合效果 例如+=) |
单目操作符(在这里强调sizeof是一个操作符 不是函数) |
关系操作符( == < > != >= <=) |
逻辑操作符( || && 在这里注意进行逻辑判断时如果前式的关系已经能判断出结果 那么后式将不进行计算) |
条件操作( exp1 ? exp2 :exp3) |
逗号表达式(从左向右依次执行,整个表达式的结果是最后一个表达式的结果) |
下标引用,函数调用和结构成员 |