第3章表达式 32算术表达式 1.自增运算 自增运算符:++ 自增运算是单目运算,操作数只能是整型变量,有前置、后置两 种方式: +i,在使用i之前,先使i的值增加1,俗称先增后用。 i++,先使用i的值,然后使i的值增加1,俗称先用后增。 如:i=1999; j艹+i;/先将i的值增1变为200,)后使用。j值也为2000*/ j=i+;/*先使用,j的值为1999。后增,将i的值增1,变为2000y 自增运算优先级处于第2级,结合自右向左
第 3章 表 达 式 3.2 算术表达式 1. 自增运算 自增运算符: ++ 自增运算是单目运算, 操作数只能是整型变量, 有前置、 后置两 种方式: ++i, 在使用i之前,先使i的值增加1,俗称先增后用。 i++, 先使用i的值,然后使i的值增加1,俗称先用后增。 如: i=1999; j=++ i; /*先将i的值增1,变为2000,后使用。j的值也为2000*/ j=i++; /*先使用,j的值为1999。后增,将i的值增1,变为2000*/ 自增运算优先级处于第2级, 结合自右向左
2自券囊达式 自减运算符: 自减运算与自增运算一样也是单目运算,操作数也只 能是整型变量。同样有前置、后置两种方式: i,在使用i之前,先使i的值减1,俗称先减后用。 i-,先使用i的值,然后使i的值减1,俗称先用后减。 如:i=2000; j=-i;先减,将i的值减1,变为1999。后使用,j值 也为1999*/ j=-;/先使用,j的值为2000。后减,将i的值减1,i的 值变为1999*/自减运算的优先级、结合性同自增运算
第 3章 表 达 式 2. 自减运算 自减运算符:-- 自减运算与自增运算一样也是单目运算, 操作数也只 能是整型变量。同样有前置、后置两种方式: --i, 在使用i之前 , 先使i 的值减1,俗称先减后用。 i--, 先使用i 的值, 然后使i 的值减1, 俗称先用后减。 如: i=2000; j=--i; /*先减, 将i 的值减1, 变为1999。 后使用, j的值 也为1999*/ j=i--; /*先使用, j的值为2000。 后减, 将i 的值减1, i的 值变为1999*/自减运算的优先级、结合性同自增运算
第彐章表达式 请特别注意 (1)自增、自减运算只能用于整型变量,不能用于常量或表达式。 (2)自增、自减运算比等价的赋值语句生成的目标代码更高效。 (3)该运算常用于循环语句中,使循环控制变量自动加、减1,或用 于指针变量,使指针指向下一个或上一个地址。 (4)表达式中包含有自增、自减运算时,容易出错,务请小心。 如:i=1 (++i)+(+i)+(++i)的值为多少呢?有的计算出9(=2+3+4) 其实这是错误的。计算时先对整个表达式扫描,i先自增3 次,由1→2→3-4,如此计算结果为4+4+4,等于12。, (i计+-)+(i+)+(i++)的值又是多少呢?类似上面分析,应为3,当 然表达式计算完成后的值同样改变为4
第 3章 表 达 式 请特别注意: (1) 自增、自减运算只能用于整型变量,不能用于常量或表达式。 (2) 自增、自减运算比等价的赋值语句生成的目标代码更高效。 (3) 该运算常用于循环语句中, 使循环控制变量自动加、减1, 或用 于指针变量,使指针指向下一个或上一个地址。 (4) 表达式中包含有自增、自减运算时,容易出错,务请小心。 如: i=1; (++i)+(++i)+(++i)的值为多少呢?有的计算出9(=2+3+4) 其实这是错误的。 计算时先对整个表达式扫描, i 先自增3 次, 由1→2→3→4, 如此计算结果为4+4+4, 等于12。 , (i++)+(i++)+(i++)的值又是多少呢? 类似上面分析, 应为3, 当 然表达式计算完成后i的值同样改变为4
第3章表达式 3.运算符的组合问题 C语言的运算符一般为一个字符,有的由两个字符组 成,在表达式中出现多个字符时如何组合呢?C编译系 统在处理时原则上尽可能自左而右将若干字符组合成一 个运算符,标识符、关键字也按同样的原则进行处理 如计++j,解释为(计++)+j,非计(+j)。如要表示 i(+j),必须加括号
第 3章 表 达 式 3. C语言的运算符一般为一个字符, 有的由两个字符组 成, 在表达式中出现多个字符时如何组合呢?C编译系 统在处理时原则上尽可能自左而右将若干字符组合成一 个运算符, 标识符、关键字也按同样的原则进行处理。 如i+++j, 解释为(i++)+j, 非i+(++j)。 如要表示 i+(++j), 必须加括号