问:在使用后缀形式的++或--时,何时执行自增或自减操作?
答:这是一个非常好的问题,也是一个非常难回答的问题。C语言标准引入“顺序点”的概念,并且指出“应该在前一 个顺序点和下一个顺序点之间对存储的操作数的值进行更新”。在C语言中有多种不同类型的顺序点,表 式语句的末尾是其中一种。在表达式语句的末尾,该语句中的所有自增和自减操作都必须执行完毕,否则不能执 行下一条语句。
一些运算符(逻辑与,逻辑或,条件和逗号)对顺序点也有影响。函数调用也是如此:在函数调用执行之前,所 有的实际参数必须全部计算出来。如果实际参数恰巧是含有++或--运算符的表达式,那么必须在调用前进行自 增自减操作。
问:C语言为什么提供++和--运算符?它们是比其它的自增,自减方法执行得快,还是仅仅更便捷?
答:C语言从ken Thompson早期的B语言中继承了++和--。 Thompson创造这类运算符是因为他的B语言编译器可以 对++i产生比i = i + 1更简洁的翻译。这些运算符已经成为C语言 根深蒂固的组成部分(事实上,许多最著名的 C语言惯用法都依赖于这些运算符)。对于现代编译器而言,使用++和--不会使编译器的程序变得更短小或更 快,继续普及这些运算符主要是由于它们的简洁和便利。
(摘自 C语言设计现代方法)
有哪些点是顺序点:
原文:http://www.cnblogs.com/fFaXzz/p/4909728.html