Antigloss 最后修改于 2006-12-27
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\n");
printf("Height: %d %d %d\n", Antigloss, Sally, Ralphclark);
return 0;
}
赋值运算是从右向左进行结合的,上面的赋值语句首先将 172 赋值给 Ralphclark,然后把Ralphclark的值(也就是 172)赋予 Sally,最后把 Sally 的值赋予 Antigloss。运行结果如下:
Antigloss Sally Ralphclark
Height: 172 172 172
参考资料:C Primer 5th Edition
C99 标准
本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 antigloss 共同所有,转载请注明原作者和出处。谢谢。