C 语言提供的用于基本算术运算的运算符(Operator)有:=、+、-、*,以及 /。C 没有提供指数运算符,不过 C 标准函数库提供了 Pow 函数用于指数运算。例如:Pow(9.0, 2.0) 返回 81.0,也就是 9.0 的 2.0 次方。
赋值运算符(Assignment Operator): =
C 语言中, = 不是等于号,而是赋值运算符。以下语句:
Var = 100;
把整数值 100 赋予变量 Var。也就是说,= 左部是变量的名字,右部是赋予变量的值。不要把上述语句理解为“Var 等于 100”,正确的理解是“将整数值 100 赋予变量 Var”。我们再看一个语句:
Var = Var + 1;
这个语句的意思是,先将 Var 的值和 1 相加,然后把相加结果赋值给 Var 。假设赋值之前 Var 的值是 100,那么赋值后 Var 的值就是 101。
语句 100 = Var; 是非法的。因为 100 是一个常量,常量的值是不能改变的,所以我们不能给 100 赋值。我们必须牢牢记住,= 的左部必须是变量。
术语解释:数据对象(Data Object)、左值(Lvalue)、
右值(Rvalue),操作数(Operand)
数据对象是指可用于存取值的一定量的数据存储空间。例如:用于存储变量或者数组等的数据存储空间就是数据对象。左值是指用于识别特定数据对象的名字或者表达式(Expression)。变量名就是左值。所以,数据对象是指实际的数据存储空间,而左值是指用于识别或者定位存储空间的标签。
并非所有数据对象的值都可以改变。如果某个左值确定的数据对象刚好是可变值的,则称这个左值为可变左值(Modifiable Lvalue)。因此,我们说赋值运算符的左部必须是可变左值。
右值是指可用于赋值给可变左值的值。例如:
Var = 100;
这里的 Var 是可变左值,100 是右值。右值可以是常量、变量,也可以是任何能够产生值的表达式。
操作数是指运算符的作用对象。所以,Var 和 100 都是赋值运算符的操作数。
下面我们来看一个例子。
/* Height.C */
#Include <Stdio.H>
Int Main(Void)
{
Int Antigloss, Sally, Ralphclark;
Antigloss = Sally = Ralphclark = 172;
Printf(" Antigloss Sally Ralphclark
");
Printf("Height: %D %D %D
", Antigloss, Sally, Ralphclark);
Return 0;
}
赋值运算是从右向左进行结合的,上面的赋值语句首先将 172 赋值给 Ralphclark,然后把Ralphclark的值(也就是 172)赋予 Sally,最后把 Sally 的值赋予 Antigloss。运行结果如下:
Antigloss Sally Ralphclark
Height: 172 172 172 |