当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

华中科技大学:《C语言程序设计》第2章(2-3-7) 赋值运算

资源类别:文库,文档格式:PPT,文档页数:23,文件大小:124.5KB,团购合买
2.3.7赋值运算 一、赋值运算符(11个): 简单赋值运算符: 复合赋值运算符:
点击下载完整版文档(PPT)

得程序设设 感减 20023

C语言程序设计 2002 年 第二章 基本数据类型和运算

23.7赋值运算 赋值运算符(11个) 简单赋值运算符:= 复合赋值运算符:+= =/=9= &=F 优先级:仅高于逗号运算符 赋值表达式的形式: 1=e2 或 el op=e2 操作数:e1必须为左值表达式。e1和e2可为不同的基本类型。 例: a=c+d S|3=10 而a*b=c是错误的

2.3.7 赋值运算 赋值运算符( 11个): ▪ 简单赋值运算符: = ▪ 复合赋值运算符: += -= *= /= %= &= |= ^= >= 优先级: 仅高于逗号运算符. 赋值表达式的形式: e1=e2 或 e1 op=e2 操作数: e1必须为左值表达式。 e1和e2可为不同的基本类型。 例: a=c+d s[3]=10 而 a*b=c 是错误的

类型转换: 计算e2时遵循一般表达式的规则。 计算e1时不执行任何类型转换。(不需要整数提升) 赋值时候将e2结果类型转换为e1的类型(赋值转换) 运算结果:赋值后的e的值和类型。 简单赋值运算符: 例 Int x; char ch; short cl c2 x=100值为100,类型为int(无类型转换) x=123.6值为123,类型为int( doubles int) x a 值为97,类型为int(整数提升 chari int) x=a3<“b’值为1,类型为int(整数提升、无赋值转换)

类型转换: ▪ 计算e2时遵循一般表达式的规则。 ▪ 计算e1时不执行任何类型转换。(不需要整数提升) ▪ 赋值时候将e2结果类型转换为e1的类型(赋值转换)。 运算结果:赋值后的e1的值和类型。 简单赋值运算符: 例: int x; char ch; short c1,c2; x=100 值为100,类型为int (无类型转换) x=123.6 值为123,类型为int (double➔ int) x=‘a’ 值为97,类型为int (整数提升char➔ int) x=‘a’<‘b’ 值为1, 类型为int (整数提升、无赋值转换)

ch=100值为100,类型为char( int-char) printf(“%od”,ch=128);的输出为-128 c⊥=X 值由x决定,类型为 short(int→ short) cl=c2=1值为1,类型为 short( int=short) 表达式的值 2 cI 2 C2

ch=100 值为100,类型为char (int➔char) printf(“%d”,ch=128); 的输出为-128 c1=x 值由x决定,类型为short (int➔short) c1=c2=1 值为1,类型为short (int➔short) c1 ? c2 ? 表达式的值 1 c1 ? c2 1 c1 1 c2 1 ① ②

复合赋值运算符: int i i+=1;与i=i计1(及++i等价,与计+不等价; i<<与i≤j等价; i/=j+2与i=i(+2)等价; i%=*2与i=i%(j2)等价; 注意:复合赋值表达式与其展开式不一定等价: int 1=0; int s 10; S[0J=10: S[i++]+=1;与si+=si++]+1不等价;

复合赋值运算符: int i,j; i+=1; 与 i=i+1(及++ i)等价,与 i++不等价; i<<=j 与 i=i<<j 等价; i/=j+2 与 i= i/(j+2) 等价; i%=j*2 与 i= i%(j*2) 等价; 注意:复合赋值表达式与其展开式不一定等价: int i=0; int s[10]; s[0]=10; s[i++]+=1; 与 s[i++]= s[i++] +1 不等价;

238条件运算 问号运算符:(?:)唯一的三目运算符。 问号表达式:el?e2:e3 e1必须为基本类型或指针,可求出0或非0值。 e2和e3为基本类型时,可分别为不同基本类型 e2和e3为结构、联合类型时,必须为相同类型

2.3.8 条件运算 问号运算符: (? : ) 唯一的三目运算符。 问号表达式: e1 ?e2 : e3 e1 必须为基本类型或指针,可求出0或非0值。 e2和e3为基本类型时,可分别为不同基本类型。 e2和e3为结构、联合类型时,必须为相同类型

运算符的功能 el 非0 0 计算e2 计算e2 以e2的值为结果 以e2的值为结果 运算结果:根据e决定取e2或e3的值作为表达式式的值。 当e2和e3的类型不同时,则转换成同类型 运算结果只有一种类型,即转换后的类型

e1 计算e2 以e2的值为结果 计算e2 以e2的值为结果 运算符的功能: 运算结果:根据e1决定取e2或e3的值作为表达式式的值。 当e2和e3的类型不同时,则转换成同类型。 运算结果只有一种类型,即转换后的类型 非0 0

例1:inti=0; unsigned j i? i++: i+ 结果为1,类型为 unsigned,i的值未变。 计+1?计++:计+j结果为0,类型为 unsigned,i的值为1。 例2:求变量a,b中较大的一个 a>b? a b 例3:若字符ch为小写字母,改成大写字母,否则不变。 ch=(ch>=a'&& ch=a,&&ch0)?1:(a0)?l:(a0?1:a<0?-1:0

例1: int i=0; unsigned j=1; i ? i++ :i+j 结果为1,类型为unsigned,i的值未变。 i+1 ? i++ :i+j 结果为0,类型为unsigned,i的值为1。 例2: 求变量a,b中较大的一个。 a>b ? a :b 例3:若字符ch为小写字母,改成大写字母,否则不变。 ch=(ch>=‘a’ && ch=‘a’ && ch0) ? 1: ((a0) ? 1: (a0 ? 1: a<0? –1 :0 等价

2.3.9顺序求值运算 逗号运算符:, 逗号表达式:el,e2(或el,e2,。。。。,en) 操作数类型:基本类型和指针类型。 运算符功能:先e1再e2,el和e2间无任何运算,无任何 直接联系,但e1的运算可能产生副作用,影响 e2的计算结果。无类型转换。 运算结果:取决于最后一表达式

2.3.9 顺序求值运算 逗号运算符: , 逗号表达式: e1,e2 (或e1,e2,。。。。,en) 操作数类型:基本类型和指针类型。 运算符功能:先e1再e2, e1和e2间无任何运算,无任何 直接联系,但e1的运算可能产生副作用,影响 e2的计算结果。 无类型转换。 运算结果:取决于最后一表达式

例1:1+2,2+3,3+4.0结果7.0,类型为 double; 例2:inta=10,b=20,c; c=a, a=b, b=c; 实现a、b的值互换* 例3:intm=0,n=1; m+++m++++n+++n,m+++n,m+n 表达式的值取决于最后的m+n,结果为6

例1: 1+2 , 2+3 , 3+4.0 结果7.0,类型为double; 例2:int a=10,b=20,c; c=a, a=b,b=c; /*实现a、b的值互换*/ 例3:int m=0,n=1; m++ + m++, ++n+ ++n, m+++n, m+n 表达式的值取决于最后的m+n ,结果为6

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共23页,试读已结束,阅读完整版请下载
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有