★3.2赋值运算 3.2.1--3.2.2赋值运算符、赋值表达式 程 ◆简单赋值运算符: 设 ◆赋值表达式 例a=3; 计 格式:变量标识符-表达式 d=func o ●作用:将赋值号右边的表达式 c=d+2; 给 左边的一个变量。 心复合赋值运算符 种类:+ 来=/=%=《=》=8 ●含义:expD1op=exp2分exp1=exp1 op exp2 第三章运算符和表达式 a+=3 a=a+3 x*=y+8 Xx*(y+8) x%0=3 X=x%3
3.2 赋值运算 3.2.1--3.2.2 赋值运算符、赋值表达式 ❖简单赋值运算符 : = ❖赋值表达式 ⚫格式: 变量标识符=表达式 ⚫作用:将赋值号右边的表达式计算出来,将其值赋给 左边的一个变量。 ❖复合赋值运算符 ⚫种类:+= -= *= /= %= 《= 》= &= ^= |= ⚫含义: exp1 op= exp2 exp1 = exp1 op exp2 a+=3 a=a+3 x*=y+8 x=x*(y+8) x%=3 x=x%3 例 a=3; d=func(); c=d+2; 语 言 程 序 设 计 第 三 章 运 算 符 和 表 达 式 C
3.2.3赋值运算符的优先级和结合性 今优先级:14 程 今结合方向:自右向左 左侧必须是变量,不能是常量或表达式 设 计 例3=x-2*y;达式值自动转换成其左边 a+b=3 每个表达式都例mnt 值都有所属的类型): ●i=2.56;M结果=2;等,且可嵌套 a=b=c=5 表达式值为5,a,b,c值为5 a=(b=5) b=5;a=5 第三章运算符和表达式 a=5+(c=6)//表达式值1 ,C=6,a=11 a=(b=4)+(c=6)//表达式值10,a=10,b=4,c=6 a=(b-10)/(c=2)/表达武值5,a=5,b10c=2 则f=10.0
3.2.3 赋值运算符的优先级和结合性 ❖优先级: 14 ❖结合方向:自右向左 ⚫ 左侧必须是变量,不能是常量或表达式 每个表达式都有一个值(当然每个值都有所属的类型): ⚫赋值表达式的值与变量值相等,且可嵌套 ⚫赋值转换规则:使赋值号右边表达式值自动转换成其左边 变量的类型 例 3=x-2*y; a+b=3; 例 float f; int i; i=10; f=i; 则 f=10.0 例 int i; i=2.56; //结果i=2; 例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) < > //表达式值为5,a,b,c值为5 // b=5;a=5 //表达式值11,c=6,a=11 //表达式值10,a=10,b=4,c=6 //表达式值5,a=5,b=10,c=2 语 言 程 序 设 计 第 三 章 运 算 符 和 表 达 式 C
程 设 计 例:a=12; a+=a=a*a//a=-264等价于aa+(a=a-(a*a)) 三例:inta=2; a%=4-1 算 a=a*=a-a*-3;//a=0等价于aa+(a=a*(a=a-(a=a*3) 符 和表达式 <
例: a=12; a+=a-=a*a 例: int a=2; a%=4-1; a+=a*=a-=a*=3; < > //a=-264 等价于a=a+(a=a-(a*a)) //a=0 等价于a=a+(a=a*(a=a-(a=a*3))) 语 言 程 序 设 计 第 三 章 运 算 符 和 表 达 式 C
程不同类型数据间的转换 设★隐式转换 计 今什么情况下发生 运算转换 不同类型数据混合运算时 ●赋值转换 把一个值赋给与其类型不同的变量时 输出转换 输出时转换成指定的输出格式 ●函数调用转换 实参与形参类型不一致时转换 ◆运算转换规则:不同类型数据运算时先自动转换 成同一类型 第二章数据描述
不同类型数据间的转换 隐式转换 ❖什么情况下发生 ⚫运算转换------不同类型数据混合运算时 ⚫赋值转换------把一个值赋给与其类型不同的变量时 ⚫输出转换------输出时转换成指定的输出格式 ⚫函数调用转换------实参与形参类型不一致时转换 ❖运算转换规则:不同类型数据运算时先自动转换 成同一类型 < > 语 言 程 序 设 计 第 二 章 数 据 描 述 C
double float 说明 必定的转换 long 运算对象类型不同时转换 unsigned 例in float f 低 char. sho ort double d long l ch/i+ fa 10+a+i*f d/ 例 h char c int 1 nt double double int double double float f double d double double int double double double double double double
double float long unsigned 低 int char,short 高 说明: 必定的转换 运算对象类型不同时转换 例 char ch; int i; float f; double d; ch/i + f*d - (f+i) int int double double double double double double int int double double double double double double 10+‘a’ +i*f - d/l 例 int i; float f; double d; long l; < >