最基本的语句——赋值语句
【知识点】
- 赋值运算符;
- 复合的赋值运算符;
- 赋值表达式;
- *赋值过程中的类型转换;
- 赋值表达式和赋值语句;
- 变量赋初值;
【内容】
在C程序中最常用的语句是:赋值语句和输入输出语句。
一、赋值运算符
赋值符号=就是赋值运算符,它的作用是将一个数据赋给一个变量。执行过程称为:赋值操作或赋值运算。
- 将一个常量赋给一个变量
- 例如:int a = 23;//将常量23赋给变量a
- 将一个表达式的值赋给一个变量
二、复合的赋值运算符
在赋值符=前加上其他运算符,可以构成复合的运算符。有以下复合运算符:
• +=
• -=
• *=
• /=
• %=
a += b;// a = a + b;
注意:若b是包含若干项的表达式,则相当于它有括号。(推荐:在b包含若干项表达式时,使用括号将b括起来)例如:
三、赋值表达式
定义:由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。
形式:变量 赋值运算符(=) 表达式
作用:将一个表达式的值赋给一个变量。(计算、赋值功能)
概念:左值(left value,lvalue)、右值(right value,rvalue)
左值:
- 出现在赋值运算符的左侧;
- 其值可以改变;
注意:变量可以作为左值,算术表达式a+b不能作为左值,常量的值不能改变也不能作为左值。
右值:出现在赋值运算符的右侧。左值也可以出现在赋值运算符右侧,因此左值也可以作为右值。
*四、赋值过程中的类型转换
如果赋值运算符两侧的类型一致,则直接进行赋值。
如果赋值运算符两侧的类型不一致,但都是算术类型时,在赋值时要进行类型转换。类型转换是由系统自动进行的,转换的规则是:
- 将浮点型数据(包括单、双精度)赋给整型变量时,先对浮点数取整,即舍弃小数部分,然后赋予整型变量。
- 将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。
- 将一个double型数据赋给float变量时,先将双精度数转换为单精度,即只取6-7位有效数字,存储到float变量的4个字节中。注意:双精度数值的大小不能超出float型变量的数值范围。
- 将一个float型数据赋给double变量时,数值不变,在内存中以8个字节存储,有效位数扩展到15位。
- 字符型数据赋给整型变量时,将字符的ASCII码值赋给整型变量。
- *将一个占字节多的整型数据赋给一个占字节少的整型变量或字符变量时,只将其低字节原封不动地送到被赋值的变量。例如:
本质:
- 整型数据之间的赋值,是按存储单元中的存储形式直接传送。
- 实型数据之间以及整型与实型之间的赋值,是先转换(类型)后赋值。
总结:
- 赋值运算符两侧类型不一致,系统先转换后赋值;
- 算术运算符两侧类型不一致,系统先转换后运算;
五、赋值表达式和赋值语句
六、变量赋初值
注意:如果对几个变量赋予同一个初值,应写成:
int a = 3, b = 3, c = 3;
不能写成:
int a = b = c = 3;
一般变量初始化不是在编译阶段完成的(只有在静态存储变量和外部变量的初始化是在编译阶段完成的),而是在程序运行时执行本函数时赋予初值的,相当于执行一个赋值语句。