1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 《C语言》顺序结构程序设计

《C语言》顺序结构程序设计

时间:2022-04-07 09:13:04

相关推荐

《C语言》顺序结构程序设计

一.赋值语句及执行过程

<1>赋值语句

赋值表达式后面加一个分号,就是赋值语句,格式如下:

变量=表达式 ;//有分句,是赋值语句

赋值号左侧通常是变量,右侧通常是一个表达式,但也可以是常量或者变量

<2>赋值的执行过程

赋值时,赋值号右侧表达式的值要先计算出结果,并且要在运算器中把这个结果处理成想应的格式(若是整数,则为补码表示),最后才存给变量。赋值的最后一步操作,就是把计算机从运算器写到内存变量中

二.赋值的几种数据处理方式

<1>变量和表达式结果的长度相同,则原样复制

若变量和表达式结果所占字节数相同,则之际把表达式结果的存储状态(已经在运算器中处理成相应格式的二级制数据了)原样复制到内存变量中。例如:

int a;short b;unsigned short c=65535;a=200/2;b=c;printf("%d,%hd\n",a,b);

运行结果:100,-1

【程序解析】

执行“a=200/2”;时,先计算200/2得到100,因为100是整数,故这个结果要在运行器中处理成编码00000000 00000000 00000000 01100100,而变量a在内存中也恰好也是存补码,且长度也是4个字节,所以就直接把这个补码原样搬到a的4个字节中。

赋值的处理方式(原样赋值)

<2>若变量比表达式结果“短”,则只截取低位部分

若表达式结果所占字节数比变量多,则只截取低字节部分存给变量,多余的字节丢弃(溢出),例如:

short a,b;int c=-1;a=65536;b=c;printf("%hd,%hd\n",a,b);

运行结果:0,-1

【程序解析】

对于“a=65536”一行,因65536是整数(默认为int类型),其补码是4个字节:00000000 00000001 00000000 00000000,而变量a只有两个字节的内存空间,只能存16位,故截取低位2个字节(16个0)存储,高位两个字节丢弃(溢出)

赋值的处理方式(截取)

<3>若变量比表达式结果“短”而变量“长”,则一般要进行符号扩展

若是表达式结果“短”而变量“长”,则一般进行符号扩展,例如:

long a,b;short c=1,d=-1;char e='A';a=c;//符号扩展,c的符号位是0,所以用0填充a的两个高位字节b=d;//符号扩展,d的符号位是1,所以用1填充b的两个高位字节c=e;//是否符号扩展?printf("%ld,%ld,%hd\n",a,b,c);

运行结果:1,-1,65

【程序解析】

程序中“a=c;”和“b=d”,都是把2字节的“短”数据赋值给4字节的“长”变量,赋值时,系统首先把“短”数据的两个字节原样复制到“长”变量的低位上,“长”变量高位的两个字节,则用“短”数据的符号位(即最高位)填满。

赋值的处理方式 (符号扩展)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。