一个从来没有接触过编程的人如果看到 a = a + 1 这样的算式,一定会感到奇怪。a 怎么能等于 a + 1 呢?这就像 1 等于 2 一样不可思议。
其实,这种代码的书写方式是由早期编程语言逐渐演变而来的。对于一个变量一般有三种操作,分别是初始化、值的重新分配与比较。举例来说, 「int a = 1」是初始化,「a = b」 是重新分配,「a == b」是比较。
在早期编程语言中,一般这三个过程的操作符是不同的。比如说 LISP 中,let 用来初始化,set 用来分配值,equal 用来比较。
BCPL 开始用 := 进行赋值和值的重新分配,用 = 来进行比较操作。后来 B 语言的创造者采用更为简单的 = 符号进行初始化和赋值操作,创建了 == 符号进行比较操作。其后的 C 语言及新产生的语言沿袭了这一用法。