运算符 ●算术运算符:+、-、*、/、%、+(自增)、-(自减) ·赋值运算符: =、+=、-=、*=、/=、%=、&=、|=、=、>=、<<= ·逗号运算符:,(把若干表达式组合成一个表达式) ●求字节数运算符:sizeof(计算数据类型所占的字节数) 关系运算符:用于比较运算,>、<、=、>=、<=、!= ▣ 逻辑运算符:用于逻辑运算,&&、川、」 ▣ 条件运算符:是一个三目运算符,用于条件求值(?:)》 口指针运算符:*(取内容)、&(取地址) 口位运算符:按二进制位进行运算 &、、(异或)~(取反)、<(左移)、>>(右移) 22 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 运算符 22 算术运算符:+、-、 * 、/、%、++ (自增)、-- (自减) 赋值运算符: =、+=、-=、 *=、/=、%= 、&=、|=、^=、>>=、<<= 逗号运算符:, (把若干表达式组合成一个表达式) 求字节数运算符:sizeof (计算数据类型所占的字节数) 关系运算符:用于比较运算,>、<、==、>=、<=、!= 逻辑运算符:用于逻辑运算,&&、||、! 条件运算符:是一个三目运算符,用于条件求值 ( ? : ) 指针运算符:* (取内容)、& (取地址) 位运算符:按二进制位进行运算 &、|、 ^ (异或)、~ (取反) 、<< (左移)、>> (右移)
赋值运算 标准赋值运算 X=3; y=3; 变量=表达式 X=y=3; X=yj 十这种方式不能用于变量初始化! 复合赋值运算 int a,b,c,d,e; +=、-=、*=、/=、%= a=5; b=a+3; a=a+(c=6); X+=3; → X=X+3; d=e=f=a; e*=d; x/=3; x=x/3; /=c-2; 23 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 赋值运算 23 † 这种方式不能用于变量初始化! x=3; x=y=3; y=3; x=y; int a, b, c, d, e; a = 5; b = a + 3; a = a + (c=6); d = e = f = a; e *= d; f /= c - 2; x+=3; x=x+3; x/=3; x=x/3; 变量 = 表达式 标准赋值运算 +=、-=、 *=、/=、%= 复合赋值运算
自增自减运算 自增自减(后置和前置) X++; X=X+1; ++X) X=X+1; 变量++、变量- ++变量、--变量 y=X++*X; y=x*x;X=X+1; y=++x*X; X=x+1;y=×*x; ●前置:先自增自减,然后使用 ·后置:先使用,然后自增自减 int i=10,j,kj j=i+;/j=? k=+i;/k=? t不要在同一语句中包含一个变量的多个++或-一,因为它们的解释在C/C+标准 中没有规定,完全取决于编译器的个人行为。 24 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 自增自减运算 24 变量++、变量-- ++变量、--变量 自增自减(后置和前置) x++; ++x; y=x++*x; y=++x*x; x=x+1; x=x+1; y=x*x; x=x+1; x=x+1; y=x*x; ► 前置:先自增自减,然后使用 ► 后置:先使用,然后自增自减 int i=10, j, k; j=i++; // j=? k=++i; // k=? † 不要在同一语句中包含一个变量的多个 ++ 或 --,因为它们的解释在 C/C++ 标准 中没有规定,完全取决于编译器的个人行为
逗号运算 逗号运算 表达式1,表达式2 ·先计算表达式1的值,再计算表达式2的值 ·将表达式2的值作为整个表达式的结果 int a=2,b1,b2; b1=3*a,a+10; //b1=? b2=(3*a,a+10);//b2=? 注意运算的优先级! 25 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 逗号运算 25 表达式 1, 表达式 2 逗号运算 ► 先计算 表达式 1 的值,再计算 表达式 2 的值 ► 将 表达式 2 的值作为整个表达式的结果 int a=2, b1, b2; b1 = 3*a, a+10; // b1=? b2 = (3*a, a+10); // b2=? † 注意运算的优先级!
运算优先级 高 () +(后置) -(后置) 强制类型转换 +(前置)》 -(前置) +(正号)-(负号) 米 % >= == I= && 赋值(=+=-= 米= /=等) 低 逗号运算(,)】 更多详见课程主页 26 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 运算优先级 26 高 低 () ++(后置) --(后置) 强制类型转换 ! ++(前置) ––(前置) +(正号) –(负号) * / % + – < <= > >= == != && || 赋值(= += –= *= /= 等) 逗号运算( , ) 更多详见课程主页