C 增量运算符(++/--)如何提高程序的效率

C 增量运算符(++/--)如何提高程序的效率,c,C,目前我正在学习c入门中的c。有人写道,使用++运算符提高了程序的效率,因为它类似于机器级语言 所以我想知道这和机器级语言有什么相似之处 此外,它不同于以前提出的关于添加操作的问题,现在它不重要了,即C语句 i++; 在效率方面与 i += 1; 或 现代编译器非常清楚上述所有语句都是相同的,并且使用最高效的CPU指令。对于现代工具和编译器,没有理由认为其中一个比另一个更好。这是糖果。如果您想确定,请反汇编代码并检查差异。我经常在微控制器的世界里分解它,在那里每个时钟周期都是计数的,并且可以计

目前我正在学习c入门中的c。有人写道,使用++运算符提高了程序的效率,因为它类似于机器级语言

所以我想知道这和机器级语言有什么相似之处
此外,它不同于以前提出的关于添加操作的问题,现在它不重要了,即C语句

i++;
在效率方面与

i += 1;


现代编译器非常清楚上述所有语句都是相同的,并且使用最高效的CPU指令。

对于现代工具和编译器,没有理由认为其中一个比另一个更好。这是糖果。如果您想确定,请反汇编代码并检查差异。我经常在微控制器的世界里分解它,在那里每个时钟周期都是计数的,并且可以计数,我从来没有见过一个选择或另一个改变性能一位

但是,++x和x++可能会因条件不同而有所不同,因为+++x在下次使用之前递增x,而x++在下次使用之后递增x:

int x = 0;
while (x++ < 10) { do something }
将表现出不同于

int x = 0;
while (++x < 10) { do something}

但就性能而言,使用现代工具,将x增加1的所有方法可能都是相同的。

1。C和C++是2种独立语言。你在哪里读到的?除非你有一个非常旧/低效的编译器,否则提到第1点通常是错误的。其次,它还提到新的智能编译器将++x更改为x=×+1,从而降低了效率。我知道你是对的,但我只是想知道旧编译器是如何通过使用++运算符更好地执行的。你仍然需要解释从何处获得这些信息的,这些信息是谁编写的,何时发布的。。。。然而,非常古老的编译器只执行了C到汇编的几乎1:1的映射,因此++运算符被映射到汇编中的INC指令,而x=x+1可能被转换为多条指令。现代编译器在优化代码方面做得更好,在这两种情况下都是如此。我从c primer和Stephen prata 2004年第5版的第6版中读到:增量运算符的另一个优点是,它通常生成稍微高效的机器语言代码,因为它与实际的机器语言指令相似。然而,随着供应商生产更好的C编译器,这种优势可能会消失。智能编译器可以识别x=x+1可以被视为与++x相同。措词:++x首先递增x,然后返回新值,x++返回x的值,然后递增,在下次使用之前这样说听起来很混乱
int x = 0;
while (++x < 10) { do something}