-
1 文字讲解
-
2 视频教程
2.3 赋值语句
赋值语句是程序中最经常出现的语句,它的作用是对一个变量进行赋值。赋值就是将一个数据存入一段连续的具有若干个存储单元的存储空间中,该存储空间有一个名字,就是前面介绍的变量名。程序中通过变量名来使用这些存储空间,既可以通过变量名将某个数据存入,又可以通过变量名将已存入的数据读出。对一个变量进行定义后,这个变量如果没有赋值,那么它的值是不确定的,所以对变量进行操作之前,应该对该变量进行赋值。
一、赋值语句的格式与功能
赋值语句是由赋值表达式和一个语句结束符(即分号“;”)组成的。它的一般形式是:
变量=表达式;
这种语句实际上就是在赋值表达式后面加上一个“”,它的功能是首先计算赋值号“=”右边表达式的值,然后将结果送给赋值号“=”左边的变量。例如:
g=9.8;
其中,g为变量名,“=”为赋值号。该语句表示将数据9.8赋给变量g
在赋值时,也可以使用表达式:
g=10+20-9;
执行该语句时,先计算10+20-9的值为21,再将21存入变量g中。
若再执行语句:
g=g+5;
则将g的值21取出,将21和5相加,再将结果26存入g中,即变量g的当前值为26
对于初学者,需要注意的是,“=”不是等号,而是赋值号。赋值语句与算术中的等式是完全不同的。
虽然赋值号“=”是一个运算符,但由于它的操作是将右边表达式的值赋给左边的变量, 因此,要求赋值号“=”的左边一定是一个变量而不能是常量或表达式。例如
A=a+1;
3=x/2
a+b=12
都是错误的。
例2-3 定义两个字符型变量。
char cl,c2;
c1='a';
c2=b;
这个例子定义了两个字符型变量c1、c2,一个字符型变量可存放一个字符将一个字符量存放到一个字符变量中,实际上并不是把该字符常量本身放到内存中,而是将该字符相应ASCI码存放到内存单元中。C语言中的字符型数据与整型数据之间可以通用。
例2-4 给变量赋值。
#include <stdio.h>
main()
{ char c1='a', c2;
int k;
k=c1; //将字符型变量cl赋给整型变量k
c2=97; //将整数97赋给字符型变量c2
printf("%c, %c, %d\n", c1, c2, c1);
//字符变量既可按字符型输出,也可按整型输出
printf("%d, %c1\n", k, k);
//整型变量既可按整型输出,也可按字符型输出
}
运行结果如图2-2所示。
上面的程序中,变量说明:
char c1='a', c2;
等价于
char c1, c2:
即在定义变量的同时,可以给变量赋初值。
例2-5 将小写字母转换成大写字母。
#include <stdio.h>
main()
{ char cl,c2;
int i, j;
c1='a';
c2=c1-32; //c2='A'
printf("%c,%c",c1,c2);
}
运行结果为:
a,A
另外,由于C语言中还有一些复合赋值运算,如+=、-=、*=、 /=等,因此,下列语句:
c+=32; (相当于c=c+32;)
c-=32; (相当于c=c-32)
i*=a+b; (相当于i=i(a+b);)
k/=2; (相当于k=k/2;)
均为赋值语句,它们均可以作为一个单独的语句在程序中出现。
二、赋值语句中的类型转换
当赋值语句(或赋值运算表达式)中“=”左边的变量与右边表达式的数据类型不一致时, C编译系统会自动实现数据类型的转换,转换的原则是将赋值号右边的表达式值的类型转换成与左边变量相同的类型后再赋值。例如:
int a;
short b;
char c;
a=b; //shot型变量b的值转换成int型后再赋给a
b=c; //char型变量c的值转 short换成型后再赋给b
a=b+c; //将b和c的值转换成int型后相加,再赋给a
需要注意的是,对于不同类型的变量,由于其数据的长度不同,当左边变量的数据类型比右边表达式值的类型长(比如int型转换成float型或 float型转换成 double型)时,转换后的值不会改变精度或准确度,只是改变值的表示形式。然而,当右边表达式值的类型比左边变量的类型要长时,这种转换的结果会对右边的数据进行截取,仅取出与左边变量类型相同的长度,这意味着会丢失高位数据,因此,可能引起精度降低或出现错误的结果。
看下面使用赋值语句编写的简单程序示例。
例2-6使用赋值语句编写程序。
main()
{
double x; int a =350; char c;
c=a;
x=a;
printf("a=%d,c=%d,x=%f\n ", a, c, x);
getch( );
}
程序的运行结果如图2-3所示。
因为字符型在内存中仅占一个字节,所以执行“c=a”后,char型变量c只取int型变量a值的低8位, double而型比int型大,所以执行“x=a后,x的值不会比a小.程序中 printf()是格式化输出标准函数,它可将a、c、x的值按指定的格式显示在屏幕上, getch()也是标准函数,等待用户输入任意一个字符。
一般来说,一个完整的计算机程序经常要求具备输入和输出功能。C语言本身没有配备完成输入/输出功能的语句,它的输入/输出功能是通过在程序中调用系统提供的标准函数来实现的。下面介绍几种常用的输入/输出(I/O)标准函数。


