一 运算符 1 运算符及分类 运算符是特定的算术或者逻辑符号。 1)按功能分类 算术运算符、关系运算符、逻辑运算符和按位运算符。 2)按操作数的个数分类 单目运算符、双目运算符和三目运算符。 2 运算符的优先级 运算符的优先级分15等级,1级最高,15级最低。 表达式中,优先级高的的先于低的运算,优先级相同的时候,按照运算符的结合性运算。 3 运算符的结合性 左结合:多个同级优先级的运算符,从左向右运算。比如 算数运算符。 右结合:与左结合相反,比如赋值运算符。 4 表达式 表达式:将同类型的数据(常量,变量和函数等)用运算符按照一定规则连接起来的式子。表达式一定有返回值。 表达式后加分号,构成表达式语句。 1)表达式分类 算术表达式、关系表达式和逻辑表达式。 5 常用运算符 1) 算数运算符(左结合):+ - * / % 操作数为int型时,结果取整,如果有一个为实数类型,结果为双精度实数。 m/n 取余的时候结构正负性取决于 m。 2)赋值运算符(右结合) = 作用:把等号右侧的值赋值给左侧的变量。 变量=值(或表达式); 注意:等号左侧一定是变量,不能是表达式。 3) 复合赋值运算符 += …… 先运算后赋值。 a + = 3 作用和 a=a+3;作用一样 4) 自增自减运算符 i++; i--;++i;--i; 前缀表达式 ++i; --I; i++;作用和 i=i+1;一样 先让变量i自增自减,之后用自增自减之后的i值作为表达式的值 后缀表达式 i++; i--; 先用i值作为表达式的值,之后i的值再自增自减 5) sizeof运算符) 作用:给出操作数的存储大小。单位(字节) 用法: sizeof(数据类型/常量/变量/结构体) 注意:sizeof不是函数,编译时进行 6) 逗号运算符 作用:把两个表达式连接到一起,形成逗号表达式。 求值过程:分别求每个表达式的值,以最后的表达式的值作为整个表达式的值。 例 Int a=4,b=6,c=7; Int result =(a+1,b+1,c+1);逐个求值 最后把c+1的值赋值给result。 逗号表达式不注重求值的结果,注重求值过程中哪些变量的值发生了变化。 7) 关系运算符(左结合)> 、<、>=、<=、==、!= 所有的数值都有真假性,非0即真,只有0为假。 关系运算符的返回值只有0和1. 8) 逻辑运算符 (或)||、&&(与)、(非)! 或(左结合):两个表达式只要有一个真值,整个表达式的值就为真。 短路或:前一个表达式的值为真,后面表达式就不进行判断了 例 int x=y=1; Int result= ++x || ++y; 此时 x值为2 y值为1 result的值为1(真)。 与(左结合):两个表达式的值都为真,整个表达式的值才为真。 短路与:前一个表达式的值为假,后面表达式就不进行判断了 例 int x=1,y=2; Intresult = x>y && x++ > y++; 此时x值为1,y值为2 result值为0(假)。 非(右结合):非真即假,非假即真。 9) 三目运算符(右结合) ? : 条件表达式? 表达式1:表达式2 如果条件表达式的值为真,表达式1的值为整个表达式的值。 如果条件表达式的值为假,表达式2的值为整个表达式的值。 注意:? 和:是成对出现。 例 取a和b中较大值赋值给result。 int a=5,b=6 int result = a>b? a:b; 取a、b和c中较大值赋值给result。 int a=5,b=6,c=7; nt result=a>b?a:b>c?b:c
|