我总是想知道为什么这样一个简单而基本的操作,比如交换两个变量的内容,并不是内置于许多语言中的.
它是计算机科学课程中最基本的编程练习之一; 它在很多算法中被大量使用(例如排序); 每隔一段时间就需要它,并且必须使用临时变量或使用模板/泛型函数.
它甚至是许多处理器上的基本机器指令,因此具有临时变量的标准方案将得到优化.
已经创建了许多不太明显的运算符,例如赋值运算符(例如+ =,可能是为了反映累积的机器指令而创建的,例如添加ax,bx),或者?? C#中的运算符.
那么,原因是什么?或者它确实存在,我总是错过它?
根据我的经验,除了已经提到的排序算法以及偶尔在低级别的硬件中,它在实际应用中并不常见,因此在我看来,使用通用语言有点太特殊了. .
正如前面提到的,并非所有处理器都支持它作为指令(并且许多处理器不支持大于单词的对象).因此,如果它支持一些有用的附加语义(例如,作为原子操作),则难以在某些处理器上支持,并且如果它没有额外的语义,则它(仅很少使用)同步糖.
支持运算符(+ =等)是因为它们在现实世界的程序中更常见 - 因此它们提供的合成糖更有用,并且作为优化 - 记住60年代末/ 70年代初的C日期,并且编译器优化不那么先进(并且机器功能较差,所以你不需要冗长的优化传递).
保罗