云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 浙江大学刘加海C语言课件1

浙江大学刘加海C语言课件1

  • 62 次阅读
  • 3 次下载
  • 2025/5/5 21:14:16

第1章 C程序设计基础

unsigned long b; b=a;

printf(\}

25 2.表达式类型的强制转换

强制类型转换表达式的形式如下: 转换格式:(类型名)<变量>;

其中(类型名)称为强制类型转换运算符,可以利用强制类型转换运算符,将一个表达式的值转换成指定的类型,这种转换是根据人为要求而进行的。

例1.26 表达式类型强制转换的例子。

#include void main() {

float x; int i; x=3.6; i=(int)x;

printf(\}

结果为:x=3.600000,i=3

注意:语句i=(int)x;把x强制转换后的结果赋给i,而x本身的类型并不改变。

例1.27 设x=2.5、a=7、y=4.7,算术表达x+a%3*(int)(x+y)%2/4的值为( )。 (A)2.5 (B)7 (C)4.7 (D)2.75

解析:取模运算只能在整型数据之间进行,a为整型变量。因为%、*、/这三个运算符的优先级别相同,而类型转换符优先于*、/运算符,a的值为7,7%3=1,又因为(int)(2.5+4.7)=7,1*7=7,7%2=1,1/4=0,所以表达式x+a%3*(int)(x+y)%2/4=x+0=2.5。答案:A。

1.7.3 自反算术赋值运算

在C语言中,如进行某一类运算: i=i+1;或j=j*(x+1);

在C语言中可以分别表示为:i+=1; j*=x+1;把这类运算称为自反算术赋值运算。其格式为:

<变量><运算符>=<表达式> 它等效为:

<变量>=<变量><运算符><表达式> 例如:

a+=表达式; 等效为:a=a+(表达式);

26 C语言程序设计 a-=表达式; 等效为:a=a-(表达式); a*=表达式; 等效为:a=a*(表达式); a/=表达式; 等效为:a=a/(表达式); a%=表达式; 等效为:a=a%(表达式);

注意:

y*=a+b;应等价于y=y*(a+b);而不是:y=y*a+b; 例1.28 分析以下程序执行的结果。

#include void main() {

int a=10;

a/=a+a; /*此表达式等效为a=a/(a+a) */ printf(\}

解析:先做a+a为20,然后做a=a/20;由于在a/20中都为整型,不作类型转换,即a=0,所以执行的结果为0。 1.7.4 连续赋值运算

在C语言中,可以对变量连续赋值,其格式为: <变量1>=<变量2>=??<变量n>=<表达式>;

先计算<表达式>值,再将其值赋给<变量n>,从右到左。 例如:a=b=c=1等效于a=(b=(c=1)); 例如:int a=1,b=2;

a+=b+(c=8); 求a的值。

解析:8赋给c,b+a+c赋给a,所以a的值为11。

例1.29 如有定义:int a=12 ; 求表达式a+=a-=a*=a的值为( )。 (A)12 (B)144 (C)0 (D)132

解析:表达式a+=a-=a*=a的运算方向是自右向左,即先计算a*=a,a值为a*a=144,再计算a-=a,a值为a-a=0,再计算a+=a,故表达式和a的值都为a+a=0。答案:C。 1.7.5 自加++、自减运算--

自加运算符“++”和自减运算符“--”的运算结果是使运算对象的值增1或减1。如: i++; 相当于 i= i+l; i--; 相当于 i= i-l;

因此,自加或自减运算本身也是一种赋值运算。

注意:

第1章 C程序设计基础

27 (1)自加、自减运算符是单目运算符,运算对象可以是整型变量,也可以是实型变量,不能是常量和表达式,因为不能给常量或表达式赋值;因此,如++3、(i+j)++等都是不合法的。

(2)自加、自减运算符既可做为前缀运算符,也可做为后缀运算符而构成一个表达式,如++i、i--等都是合法的表达式。但无论是作为前缀,还是作为后缀运算符,对于变量本身来说自增1或自减1都具有相同的效果,但作为表达式来说却有着不同的值。

例1.30 分析程序的执行结果。

#include void main() {

int i,j=10; i=j++;

printf(\}

解析:在语句i=j++;中要做两件事,一是自增,二是赋值,而++为后缀,此语句相当于:i=j,j++;先赋值后自增,因而i的值为10,j的值为11。程序运行的结果为:

i=10 j=11 。

注意:

++和--运算符的结合方向是?自右至左?。

例如,如有定义:int i=3;执行语句j=-i++;后,求i,j的值。在此语句中,i左边是负号运算符,右边是自加运算符。负号运算符和自加运算符优先级相同,但结合方向为自右至左。即相当于对表达式j=-(i++)进行运算。但此时读者不要错误理解为先做括号,此时括号只不过表示i与++相结合,它与运算的优先级是两码事。因而j的值为-3,i的值为4,此问题的程序设计为:

#include void main() { }

例1.31 分析程序的执行结果。

#include

int i=3,j; j=-i++;

printf(\

28 void main() {

int x=2 ,i; i=++x;

printf(\printf(\}

C语言程序设计 解析:++i是在使用i之前,先使i的值加1;i++是在使用i之后,使i的值加1。当执行语句i=++x;后i的值为3,因为此语句等同于++x,i=x;语句printf(\,\,++i);相当于++i;printf(\,\,i);i的值及输出均为4。语句printf(\,\,i++);相当于printf(\,\,i),++i;输出的值为4,i的值为5,不过程序运行后的结果为4,4。

思考: 请设计一个程序,检验以下说法,在int i=4; printf(“i=%d\\n”,i++); 输出为i=4,内存中i的值为5。 提示:可再次输出内存中i的值。 1.7.6 长度测试运算符sizeof

长度测试运算符sizeof可用测试某个类型变量所占用计算机内存空间的字节长度。

格式:sizeof(类型名) 例如下面的程序段:

int a;

a=sizeof(float); printf(\

其输出的值为4,因为它是测试float型的数据长度。在Visual C++6.0中一些基本类型的数据长度如下:

int : 4字节 char 1字节 short int 2字节 long int 4字节 float 4字节

double 8字节 思考: 编写一个程序,在Visual C++6.0环境下分别测试int、double型数据的长度。 1.7.7 逗号运算符与逗号表达式

“,”是C语言提供的一种特殊运算符。用逗号将表达式连接起来的式子,称为逗号表达式。

逗号表达式的一般形式为:

搜索更多关于: 浙江大学刘加海C语言课件1 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

第1章 C程序设计基础 unsigned long b; b=a; printf(\} 25 2.表达式类型的强制转换 强制类型转换表达式的形式如下: 转换格式:(类型名); 其中(类型名)称为强制类型转换运算符,可以利用强制类型转换运算符,将一个表达式的值转换成指定的类型,这种转换是根据人为要求而进行的。 例1.26 表达式类型强制转换的例子。 #include void main() { float x; int i; x=3.6; i=(int)x; printf(\} 结果为:x=3.600000,i=3 注意:语句i=(int)x;把x强制转换后的结果赋给i,而x本身的类型并不改变。 <

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com