
4.2 赋值运算符与赋值表达式
在程序中常常遇到的符号“=”就是赋值运算符。赋值运算符的作用是将一个数值赋给一个变量。在C语言中,赋值运算的语法格式如图4.3所示。

图4.3 赋值运算的语法格式
例如,将常量520赋给变量iAge,代码如下:

也可以将一个表达式的结果赋给一个变量。例如:

4.2.1 给变量赋初值

给变量赋初值是指在定义变量时,可以为其赋一个初值,就是将一个常数或一个表达式的结果赋给一个变量,变量中存储的内容就是这个常数或这个表达式的结果。
用常数给变量赋初值的语法格式如下:

其中的变量名又称为变量的标识符。用常数给变量赋初值的语法格式如图4.4所示。

图4.4 用常数给变量赋初值
以下是其他代码实例:

用表达式的结果给变量赋初值的语法格式如下:

可以看到,用表达式的结果给变量赋初值的语法格式与用常数给变量赋初值的语法格式类似,如图4.5所示。

图4.5 用表达式的结果给变量赋初值
在图4.5中,得到赋值的变量fPrice称为左值,因为它出现的位置在赋值语句的左侧。产生值的表达式称为右值,因为它出现的位置在表达式的右侧。
先声明变量,再进行变量的赋值操作也是可以的。例如:

4.2.2 自动类型转换

数据类型有很多种,如字符型、整型、实型等,因为这些数据类型的长度和符号特性都不同,所以取值范围也不同。
在C语言中,如果将较短的数据类型变量的值赋给较长的数据类型变量,那么该值的数据类型会转换为较长的数据类型,数据信息不会丢失;如果将较长的数据类型变量的值赋给较短的数据类型变量,那么该值的数据类型就会转换为较短的数据类型,当该值的大小超过较短的数据类型的取值范围时,就会发生数据截断。就像倒水,如果将小杯中的水倒入大杯,如图4.6所示,那么水不会流失;如果将大杯中的水倒入小杯,如图4.7所示,那么水会溢出来。

图4.6 将小杯中的水倒入大杯

图4.7 将大杯中的水倒入小杯
例如:

在遇到这种情况时系统会发出警告,警告信息如图4.8所示。

图4.8 警告信息
4.2.3 强制类型转换

要将较长的数据类型变量的值赋给较短的数据类型变量,如果通过强制类型转换告知编译器,就不会出现如图4.8所示的警告。强制类型转换的语法格式如下:

例如:

在上述代码中可以看到:
●在变量前使用括号包含要转换为的数据类型,即可对变量进行强制类型转换。
●如果要对某个表达式的结果进行强制类型转换,那么需要将表达式用括号括起来,否则会只对第一个变量进行强制类型转换。