2.10 赋值运算符与赋值表达式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15
,
功能
括号,数组,两种结构成员访问 否定,按位否定,增量,减量, 正负号,间接,取地址,类型转换,求大小 乘,除,取模 加,减 左移,右移 小于,小于等于,大于等于,大于 等于,不等于 按位与 按位异或 按位或 逻辑与 逻辑或 条件
各种赋值
逗号(顺序)
结合方式
由左向右 由右向左
由左向右 由左向右 由左向右 由左向右 由左向右 由左向右 由左向右 由左向右 由左向右 由左向右 由右向左
a=(b=5) a=b=c=5 a=5+(c=6) a%=(n%=2)
优先级 运算符
=
14 += -= *= /= %= &= ^= |=
<<= >> =
功能
各种赋值
结合方式
由右向左
printf("%d",(j=i++));
(a=3*5)=4*3
a+=a-=a*a
精度降低,可能溢出
float f f = 2.8e59;
原样照搬,但原符号位也作 unsigned int u;
为数值部分对待
u=-32765;
赋值中的自动类型转换示例
复合的赋值运算符
形式 +=,-=,*=,/=,%=,<<=,>>=,&=,∧=,|=
例如
a+=3
//等价于 a=a+3
x*=y+8
本节主题: 赋值运算符与赋值表达式
赋值也是一种运算!
优先级
运算符
1
() [] -> .
2 ! ~ ++ -+ - * & (类型) sizeof
3
* /%
4
+-
5
Biblioteka Baidu<< >>
6
< <= >= >
7
== !=
8
&
9
^
10
|
11
&&
12
||
13
?=
14 = += -= *= /= &= ^=
|= <<= >>=
由右向左
由左向右
简单的赋值表达式
赋值表达式 <变量> <赋值运算符> <表达式> <左值> = <右值>
例:
int a;
a = 3;
a
变量名(左值)
int b;
3
右值
double c, d;
存储单元
b = a * a;
c = 3.75; d = sin(b) + 1;
左值常为变量,而不能是常量
int a, b, c; printf("%d\n", (a=5)); printf("%d\n", (b=(c=6))); printf("%d %d %d\n", a, b, c); return 0; }
赋值表达式求值 <变量> <赋值运算符> <表达式>
赋值表达式中的“表达式”,又可以是一个赋值表达式。
赋值过程中的数据类型自动转换 <左值> = <右值>
左值
右值
转换方法
举例
整型变量
浮点型数据 (单、双精度)
浮点数舍弃其小数部分
int a; a = 4.38;
浮点型变量
float变量 unsigned型 变量
整型数据
double型数据 长度相同的 signed型数据
double d; 数值不变,以指数形式存储 d = 375;
//等价于 x=x*(y+8)
x%=3
//等价于 x=x%3
复合的赋值运算符优点
简化程序,使程序精炼,
提高编译效率,能产生质量较高的目标代码。
赋值表达式及其值
赋值语句
a=3; b+=6.32;
赋值表达式
a=3 b+=6.32
赋值表达式的值
就是赋予左值的值!
#include <stdio.h> int main() {