操作符和表达式版权所有@陈暂保留所有权利陈哲版权所有陈哲保留所有权利
版 权 所 有 © 陈 哲 保 留 所 有 权 利 版权所有© 陈哲 保留所有权利 操作符和表达式 陈哲
>操作符和表达式总览>优先级和结合性算术操作符V位操作符复合赋值操作符关系操作符逻辑操作符版权所有@陈哲保留所有权利条件操作符V隐式类型转换和强制类型转换V表达式和语右V版权所有陈哲保留所有权利
版权所有© 陈哲保留所有权利 版权所有 © 陈哲 保留所有权利 2 ➢操作符和表达式总览 ➢优先级和结合性 ➢算术操作符 ➢位操作符 ➢复合赋值操作符 ➢关系操作符 ➢逻辑操作符 ➢条件操作符 ➢隐式类型转换和强制类型转换 ➢表达式和语句
操作符和表达式总览>操作符可以根据功能划分:。求字节数操作符(sizeof)指针操作符(&,*)福算术操作符(+,-,*,/,%,++,--)。位操作符夺(&, 1,~, >,<<, >>)赋值操作符(三,复合赋值操作符)关系操作符(>,<,==,>=,<=,!=)版权所有@陈暂保留所有权利逻辑操作符(&&,I,!)条件操作符(?:)。函数调用操作符(0)。下标操作符([])强制类型转换操作符((type))。成员操作符(.->)逗号操作符()3
版 权 所 有 © 陈 哲 保 留 所 有 权 利 操作符和表达式总览 ➢操作符可以根据功能划分: ◦求字节数操作符(sizeof) ◦指针操作符(&, *) ◦算术操作符(+, -, *, /, %, ++, -) ◦位操作符 (&, |, ~, ^, <<, >>) ◦赋值操作符(=, 复合赋值操作符) ◦关系操作符(>, <, ==, >=, <=, !=) ◦逻辑操作符(&&, ||, !) ◦条件操作符(?:) ◦强制类型转换操作符( (type) ) ◦逗号操作符(,) 3 ◦ 函数调用操作符(()) ◦ 下标操作符([ ]) ◦ 成员操作符(., ->)
>操作符可以根据操作数的数量划分:一元操作符只有一个操作数例如:sizeof(operand)、+operand二元操作符有两个操作数例如:operand1+operand2三元操作符有三个操作数例如:operand1?operand2:operand3>表达式:常量、变量、函数调用、或者版权所有@陈暂保留所有权利由操作符和括号连接起来的表达式例如:1+×*(y>1)-z是一个表达式。4
版 权 所 有 © 陈 哲 保 留 所 有 权 利 ➢操作符可以根据操作数的数量划分: ◦一元操作符只有一个操作数 例如:sizeof(operand)、+operand ◦二元操作符有两个操作数 例如:operand1 + operand2 ◦三元操作符有三个操作数 例如:operand1 ? operand2 : operand3 ➢表达式:常量、变量、函数调用、或者 由操作符和括号连接起来的表达式。 例如:1 + x * (y > 1) - z是一个表达式。 4
优先级和结合性>优先级(precedence):当一个表达式中有多个不同操作符时,按优先级顺序依次计算例如,a+b*c-d/e相当于a+(b*c)-(d/e)>结合性(associativity):当一个表达式中有多个同一优先级的操作符时,按结合性依次计算两种结合性:“从左往右”和“从右往左”。例如,算术操作符是“从左往右”,版权所有@陈哲保留所有权利因此,a+(b*c)-(d/e)相当于 (a+(b*c))-(d/e)例如,取地址和解引用操作符是“从右往左”因此,*&*p相当于*(&(*p))5
版 权 所 有 © 陈 哲 保 留 所 有 权 利 优先级和结合性 ➢优先级(precedence):当一个表达式中有多 个不同操作符时,按优先级顺序依次计算。 例如,a+b*c-d/e相当于a+(b*c)-(d/e) ➢结合性(associativity):当一个表达式中有多 个同一优先级的操作符时,按结合性依次计算。 两种结合性:“从左往右”和“从右往左”。 例如,算术操作符是“从左往右” , 因此,a+(b*c)-(d/e) 相当于 (a+(b*c))-(d/e) 例如,取地址和解引用操作符是“从右往左”, 因此,*&*p 相当于 *(&(*p )) 5