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

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

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

  • 62 次阅读
  • 3 次下载
  • 2025/5/5 17:02:33

第1章 C程序设计基础

21 1.6 变量与地址

若在程序中定义了一个变量,这个变量在内存中的地址也就确定了。C语言中所说的每个变量的地址是指该变量所占存储单元中第一个字节的地址。每一个变量都对应一个或几个存储单元,也就有一个存储单元的首地址与之相对应,这个地址称为“变量的地址”,计算机根据地址对变量进行操作。

例如:

int a = 10,b = 20 ; long int c =3000;

变量a、b、c的地址分别用&a、&b、&c表示。

注意:

变量的地址由操作系统给定,非人为所定。即把某个地址赋给变量地址是错误的,如语句:&a=2000H;是非法的。但是一旦定义一个变量后,可以得到这个变量的地址。 例1.21 当程序中定义某个变量j后,用以下程序可以输出变量j的地址。

#include void main() { int j;

printf(\ }

思考: 地址输出格式中可用十六进制或无符号数,而不用十进制数形式。 注意:

(1)求地址运算符‘&’只能应用于变量和以后将要介绍的数组元素,不可以用于表达式、常量或者被说明为register的变量。

(2)变量之间的地址可能是连续的,也可能是不连续的,请分析以下程序。 例1.22 变量的地址举例。

#include void main() {

int a=1; char b='a'; float c=5.6; double d=3.2;

22 printf(\printf(\printf(\printf(\}

C语言程序设计 运行程序后请思考:

(1)程序运行后变量a、b、c、d的地址如何?

(2)变量a、b、c、d的地址是否存储在一个连续的空间。 (3)再次运行时的地址与前一次是否相同。

1.7 运算符与表达式

在C语言中基本运算符有算术运算符、关系运算符、逻辑运算符、位运算符、自反运算符、逗号运算符、条件运算符等。算术运算符有:+、-、*、/、%,分别为加、减、乘、除、求余运算符。这些运算符需要两个运算对象,称为双目运算符。除求余运算符外,运算对象可以是整型,也可以是实型。

求余运算符的运算对象只能是整型数。在“%”运算符左侧的运算数称为被除数,右侧的运算数称为除数,运算结果是两数相除后所得的余数。当运算对象为负数时,所得结果的符号随机器而不同,在Visual C++6.0中,符号与被除数相同。

例1.23 余数符号举例。

#include void main() {

printf(\}

程序运行的结果为: 2 2 -2 -2

注意:

(1)双目运算符两边运算数的类型必须一致才能进行操作。所得结果的类型与运算数的类型一致。

(2)如果双目运算符两边运算数的类型不一致,如一边是整型数,另一边是实型数时,系统将自动把整型转换为实型数,使运算符两边的类型达到一致后,再进行运算。

例如:

1/2.0;表达式1/2.0自动把1转化为1.0,然后再运算1.0/2.0;其运算结果为0.5。而表达式l/2;由于类型相同,运算结果为整型数,其值为0。

第1章 C程序设计基础

23 1.7.1 赋值运算符及赋值表达式

在C语言中,“=”符号称为赋值运算符,由赋值运算符组成的表达式称为赋值表达式, 它的形式如下:

变量名=表达式;

或,变量名1=变量名2=变量名3=??=变量名n=表达式;

赋值号的左边必须是一个代表某一存储单元的变量名,或是代表某存储单元的表达式,对于初学者来说,只要记住等号左边必须是变量名即可。赋值号的右边必须是C语言中合法的表达式。

赋值运算的功能是先求出右边表达式的值,然后把此值赋给等号左边的变量,确切地说,是把数据放入以该变量为标识的存储单元中去。

在程序中可以多次给一个变量赋值,因此每赋一次值,与它相应的存储单元中的数据就被更新一次,内存中当前的数据就是最后一次所赋的那个数据。

注意:

(1)赋值运算符的优先级别只高于逗号运算符,比其他任何运算符的优先级都低,且具有自右向左的结合性。因此,对于如下的表达式:

a=2+7/3;

先计算赋值运算符右边表达式的值,再把此值赋给变量a。

(2)赋值运算符不同于数学中的等于号?=?,这里不是等同的关系,而是进行?赋予?的操作。赋值表达式x=y的作用是:将变量y所代表的存储单元中的内容赋给变量x所代表的存储单元,赋值后,y变量中的内容保持不变。读作?把y的值赋予x变量?,而不应读作?x等于y?。 (3)赋值表达式x=x的含义是取变量x中的值放入到变量x中去,表达式n=n+l是合法的赋值表达式,其作用是取变量n中的值加1后再放入到变量n中,即,使变量n中的值增1。

(4)赋值运算符的左侧只能是变量不能是常量或表达式。如4+b=c是不合法的赋值表达式;赋值号右边的表达式也可以是一个赋值表达式,如c=b=7+l,按照运算符的优先级进行运算。 1.7.2 表达式类型的转化

如果运算符两侧的数据类型不一致,在赋值前,系统将自动先把右侧表达式求得的值,按赋值号左边变量的类型进行转换,也可以用强制类型转换的方式人为地进行转换。在这里,特别需要指出的是:在进行混合运算时,整型数据类型之间的转换问题。

1.表达式类型的自动转化

在C语言的表达式中(不包括赋值表达式),如果运算符两边的整数类型不相同,将进行类型之间的转换。转换规则如下:

24 C语言程序设计 (l)运算符两边一个是短整型,一个是长整型,则短整型转换成长整型,然后进行运算。 (2)运算符两边一个是有符号整型,一个是无符号整型,则有符号整型转换成无符号型,然后进行运算。

在C语言的赋值表达式中,赋值号右边的值先转换成与赋值号左边的变量相同的类型,然后进行赋值。

注意:

当赋值号左边的变量为短整型,右边的值为长整型时,短整型变量只能接受长整型数的低位上两个字节中的数据,高位上两个字节中的数据将丢失;也就是说,右边的值不能超出短整型的数值范围,否则将得不到预期的结果。 例1.24 无符号数转化为有符号数的例子。

#include void main() {

short int a; unsigned long b; b=98304;

a=b; /*长整型数b赋值给短整型数a*/ printf(\,a); }

程序运行后输出为: a=-32768

解析:无符号数b在内存中占4字节,在内存中表示为: 0000 0000 0000 0001 1000 0000 0000 0000 a为2字节,b赋给a,高位上两个字节中的数据将丢失,a在内存中的表示为:

1000 0000 0000 0000 则a中的值为-32768。 注意:

当赋值号左边的变量为无符号整型数,右边的值为有符号整型数时,把内存中的内容原样复制。赋值号右边数值的范围不应该超出左边的变量可以接受的数值的范围。同时需要注意,这时负数将转换为正数。

例如:变量b被说明为unsigned类型,在将a的值-1赋给b后,将使b中的值变为4294967295。

例1.25 有符号数转化为无符号数的例子。

#include void main( ) {

short int a=-1;

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

共分享92篇相关文档

文档简介:

第1章 C程序设计基础 21 1.6 变量与地址 若在程序中定义了一个变量,这个变量在内存中的地址也就确定了。C语言中所说的每个变量的地址是指该变量所占存储单元中第一个字节的地址。每一个变量都对应一个或几个存储单元,也就有一个存储单元的首地址与之相对应,这个地址称为“变量的地址”,计算机根据地址对变量进行操作。 例如: int a = 10,b = 20 ; long int c =3000; 变量a、b、c的地址分别用&a、&b、&c表示。 注意: 变量的地址由操作系统给定,非人为所定。即把某个地址赋给变量地址是错误的,如语句:&a=2000H;是非法的。但是一旦定义一个变量后,可以得到这个变量的地址。 例1.21 当程序中定义某个变量j后,用以下程序可以输出变量j的地址。 <

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价: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