我记得读过一本关于标准C编程语言的书.它在某种情况下说C你可以写i = + 1,等于i + = 1.所以i(运算符)=(表达式)等于i =(运算符)(表达式).我从来没有见过这种C,是否有人可以解释这个?
最好的问候和谢谢,范
Rem*_*o.D 22
这是C中+ =运算符的非常初始的语法.我认为它甚至在第一版K&R书籍之前就被弃用了.
编辑:带有C参考手册的PDF可以在这里找到:http: //www.math.utah.edu/computing/compilers/c/Ritchie-CReferenceManual.pdf 查看7.14.1
(唉,AnT发布的那个不再有效)
AnT*_*AnT 14
这是真的.该版本的C称为CRM C(CRM代表"C参考手册" - 由Dennis Ritchie编写的文档).在那个版本的C中有许多奇怪的东西.
你可以在这里下载这份文件http://cm.bell-labs.com/cm/cs/who/dmr/cman.pdf
Kernighan和Ritchie的The C Programming Language,第一版解释了这一点.我在这篇文章中comp.lang.c找到了一个引用.相关部分报价:
由于C是一种不断发展的语言,因此在较旧的程序中可能会发现某些过时的结构.尽管大多数版本的编译器都支持这样的时间错误[ - 1978年 - ],但它们最终会消失,只留下可移植性问题.
早期版本的C使用表单
=op而不是op=赋值运算符.这导致了模糊,以典型为代表Run Code Online (Sandbox Code Playgroud)x=-1实际上,
x由于=和-相邻而减少,但可能很容易分配-1给它x.
维基百科也有类似的描述.从他们的C入门,谈论K&R C和"老C"的差异:
表单
=op(例如=-)的复合赋值运算符被更改为表单,op=以消除由此类结构创建的语义歧义,这些结构i=-10被解释为i =- 10而不是可能的意图i = -10.