1.赋值运算符和赋值表达式
在C语言中,赋值运算符是“=”,它的功能是把其右侧表达式的值赋给左侧的变量。由赋值运算符组成的表达式称为赋值表达式,其形式如下:
变量名=表达式
赋值运算符不同于数学中的“等于号”,这里不是等同的关系,而是进行“赋予”的操作。赋值号的左边必须是一个代表某一存储单元的变量名,赋值号的右边必须是C语言中合法的表达式。例如a+b=c就是非法的赋值表达式。在程序中可以多次给一个变量赋值,每赋一次值,与它相应的存储单元中的数据就被更新一次,内存中当前的数据就是最后一次所赋的那个数据。
说明:
(1)赋值表达式x=y的作用是将变量y所代表的存储单元中的内容赋给变量x所代表的存储单元,x中原有的数据被替换掉。赋值后,变量y中的内容保持不变。此表达式应当读作“把右边变量的值赋给左边变量”,而不应读作“x等于y”。
(2)在赋值表达式x=x中,虽然赋值运算符两边的运算对象都是x,但出现在赋值号左边和右边的x具有不同的含义。赋值号右边的x表示变量x所代表的存储单元中的值。赋值号左边的x代表以x为标识的存储单元。该表达式的含义是取变量x中的值放到变量x中去。当然,这一操作并无实际意义。
表达式n=n+1也是合法的赋值表达式,其作用是取变量n中的值加1后再放回到变量n中,即使变量n中的值增1。
(3)等号右边的表达式也可以是一个赋值表达式。如a=b=7+1,按照运算符的优先级,将首先计算出7+1的值为8,然后按照赋值运算符自右向左的结合性,把8赋给变量b,最后再把变量b的值赋给变量a。而表达式a=7+1=b则是不合法的,因为在7+1=b中,在赋值号的左边不是一个变量。
(4)在C语言中,“=”号被视为一个运算符,a=19是一个表达式,而表达式应该有一个值,C语言规定最左边变量中所得到的新值就是赋值表达式的值。
(5)C语言的赋值表达式可以作为语句中的某个成分出现在众多的语句或表达式中,从而使变量中的数值变化过程变得难于掌握。因此要求读者在学习过程中建立正确的概念,才能准确掌握赋值表达式的运算规律。
2.赋值运算中的类型转换
在赋值运算中,只有在赋值号右侧表达式的类型与左侧变量类型完全一致时,赋值操作才能进行。如果赋值运算符两侧的数据类型不一致,在赋值前,系统将自动先把右侧表达式求得的数值按赋值号左边变量的类型进行转换,也可以用强制类型转换的方式人为地进行转换后将值赋给赋值号左边的变量。这种转换仅限于数值数据之间,通常称为“赋值兼容”。对于另外一些数据,例如地址值就不能赋给一般的变量,称为“赋值不兼容”。
赋值原则是舍弃浮点数的小数部分,只保留整数部分。
【浮点型赋予整型实例】
程序的运行结果为:
a=23
程序运行过程中在将浮点型赋予整型时,浮点数的小数部分被舍弃,只保留了整数部分。(www.xing528.com)
(2)整型赋予实型。
赋值原则是数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。
【整型赋予实型实例】
程序的运行结果为:
y=125.000000
这说明在将整型赋予浮点型时,整数值不变,将增加小数部分。
(3)字符型赋予整型。赋值原则是将字符的ASCII码值放到整型变量的低八位中,高八位为0。
【字符型赋予整型实例】
程序的运行结果为:
x=66
这说明在将字符型赋予整型时,字符的ASCII码值放到了整型变量中。
(4)整型赋予字符型。赋值原则是只把整型的低八位赋予字符型变量,高八位并不做任何处理。
【整型赋予实型实例】
程序的运行结果为:
ch=A
x里存储了321,其二进制形式是:
0000000101000001
在内存中,00000001作为高字节存储,01000001作为低字节存储。在将整型变量x的值赋予字符变量ch时,只是将整型变量的低字节赋予字符变量。所以ch中存储的是01000001,即十进制是65,也就是‘A’的ASCII码。所以屏幕上会显示ch=A。该实例说明在将整型赋予字符型时,只把整型的低八位赋予字符型变量,高八位并不做任何处理。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。