c -++i 和 i++ 有什么区别?

标签 c for-loop post-increment pre-increment

在C语言中,使用++ii++有什么区别,在for的递增 block 中应该使用哪个> 循环?

最佳答案

  • ++i 将增加 i 的值,然后返回增加后的值。

     i = 1;
     j = ++i;
     (i is 2, j is 2)
    
  • i++ 将增加 i 的值,但返回 i 在增加之前保持的原始值。

     i = 1;
     j = i++;
     (i is 2, j is 1)
    

对于 for 循环,两者都可以。 ++i 似乎更常见,可能是因为 K&R 中使用了它.

在任何情况下,遵循“更喜欢 ++i 而不是 i++”的指导方针,你就不会出错。

关于 ++ii++ 的效率有一些评论。在任何非学生项目编译器中,都不会有性能差异。您可以通过查看生成的代码来验证这一点,它们将是相同的。

效率问题很有趣……这是我尝试回答的问题: Is there a performance difference between i++ and ++i in C?

作为@OnFreund请注意,对于 C++ 对象而言,它是不同的,因为 operator++() 是一个函数,编译器不知道要优化临时对象的创建以保存中间值。

关于c -++i 和 i++ 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24853/

相关文章:

c - 我的代码在 Windows 上运行,但在 Linux 上失败。错误: premature end of file bmp

android - 如何使用 xml 按钮以编程方式禁用按钮

c - 避免在 C 中嵌套多个 if 语句

java - SCJP程序给出输出8 2怎么办?

c - 除算法 C 得到 float

c - 从 unsigned char 读取 N 位时字节顺序是否重要

c++ - 增量运算符/迭代器实现

java - Java 中的后置增量

c - XLIB C - 通过 PID 获取窗口

c++ - 顺时针旋转二维数组